RichTextBox for WPF
C1RichTextBox の概念と主要なプロパティ
RichTextBox for WPF の使い方 > C1RichTextBox の概念と主要なプロパティ

一見、C1RichTextBox コントロールは標準の TextBox と同じように見えます。フォント、色、テキスト、および選択を制御するために、このコントロールにも同じプロパティがあります。これはメリットになる場合があります。たとえば、TextBox コントロールを使用するアプリケーションがあるとすると、何も変更することなくこれを C1RichTextBox コントロールに置き換えられる場合があります。

たとえば、次のコードは簡単な検索置換ルーチンですが、これは TextBox コントロールと C1RichTextBox コントロールの両方で動作します。

コードのコピー
Private Sub SearchAndReplace(tb As TextBox, find As String, replace As String)
   Dim start As Integer = 0
   While True
       Dim pos As Integer = tb.Text.IndexOf(find, start)
       If pos < 0 Then
           Exit While
       End If
       tb.[Select](pos, find.Length)
       ' オプションで、変更を確認するダイアログボックスを表示します。
tb.SelectedText = replace
       start = pos + 1
   End While
End Sub
コードのコピー
void SearchAndReplace(TextBox tb, string find, string replace)
{
for (int start = 0; ; )
   {
     int pos = tb.Text.IndexOf(find, start);
     if (pos < 0) break;
     tb.Select(pos, find.Length);
     // オプションで、変更を確認するダイアログボックスを表示します。
     tb.SelectedText = replace;
     start = pos + 1;
   }
}

このコードは、Text プロパティ内で一致を検索し、Select メソッドを使用して一致をそれぞれ選択し、SelectedText プロパティを使用してそのテキストを置き換えます。このメソッドを C1RichTextBox コントロールで使用できるように変換するには、通常の TextBox の代わりに C1RichTextBox を使用できるように、最初の引数のタイプを変更するだけです。

これは、C1RichTextBox が通常の TextBox と共通しているところです。ただし、それを超える部分も当然あります。置換文字列を黄色の背景色で強調表示しようとしても、通常の TextBox では不可能です。C1RichTextBox を使用すると、コードを1行追加するだけでこれを実現できます。

コードのコピー
Private Sub SearchAndReplace(tb As TextBox, find As String, replace As String)
   Dim start As Integer = 0
   While True
       Dim pos As Integer = tb.Text.IndexOf(find, start)
       If pos < 0 Then
           Exit While
       End If
       tb.[Select](pos, find.Length)
       ' オプションで、変更を確認するダイアログボックスを表示します。
       tb.Selection.InlineBackground = New SolidColorBrush(Colors.Yellow)
       tb.SelectedText = replace
start = pos + 1
   End While
End Sub
コードのコピー
Private Sub SearchAndReplace(tb As TextBox, find As String, replace As String)
   Dim start As Integer = 0
   While True
       Dim pos As Integer = tb.Text.IndexOf(find, start)
       If pos < 0 Then
           Exit While
       End If
       tb.[Select](pos, find.Length)
       ' オプションで、変更を確認するダイアログボックスを表示します。
       tb.Selection.InlineBackground = New SolidColorBrush(Colors.Yellow)
       tb.SelectedText = replace
start = pos + 1
   End While
End Sub

Selection プロパティには、現在の選択範囲の書式を取得および変更するプロパティがあります。このプロパティや TextBox コントロールと共通するプロパティを使用して、簡単にドキュメントを作成してさまざまな書式を追加できます。

前述のテクニックを使用すると、ツールバーを実装したり、ドキュメントに構文の色指定を追加できます。これらのトピックの詳細については、後のセクションを参照してください。