RichTextBox for UWP
主要な概念と機能

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

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

Visual Basic コードの書き方

Visual Basic
コードのコピー

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

C# コードの書き方

C#
コードのコピー
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;
  }
}

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

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

Visual Basic コードの書き方

Visual Basic
コードのコピー
Private Sub SearchAndReplace(tb As C1RichTextBox, 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

C# コードの書き方

C#
コードのコピー
void SearchAndReplace(C1RichTextBox 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.Selection.InlineBackground = new SolidColorBrush(Colors.Yellow);
    tb.SelectedText = replace;
    start = pos + 1;
  }
}

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

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