0

OnChangedイベントのあるRichTextBoxがあります。OnChangedイベントは、RichTextBoxの各行を確認し、その行がプライムレングスの場合は赤に、そうでない場合は黒に色付けする必要があります。どうすればよいですか?インデックスaからインデックスbまで選択して選択色を設定することは可能だと思いますが、カーソル位置が失われると思います。カーソル位置も保持するにはどうすればよいですか?提案をありがとう。

4

2 に答える 2

1

を見てSelectionStartSelectionLength強調表示するテキストを選択します。

カーソル位置を維持するには、SelectionStart強調表示を開始する前に現在の値を保存し、強調表示が終了した後でその値にリセットするだけでよいと思います。

ただし、ハイライトをオフにしているときにユーザーが入力を続ける場合は注意が必要です。おそらく、キーボードイベントをインターセプトしてキャッシュし、正しい場所にリセットした後で挿入する必要がSelectionStartあります(または、ユーザーフレンドリーではありませんが、キーを押したときに無視する方が簡単な場合があります。ハイライト)。

于 2010-10-18T10:25:42.620 に答える
0
Private Sub txtKeys_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtKeys.TextChanged
    Dim iStart As Int32 = txtKeys.SelectionStart
    Dim iPos As Int32 = 0
    For Each s As String In Split(txtKeys.Text, vbLf)
        If s.Length > 0 Then
            txtKeys.Select(iPos, iPos + s.Length)
            If isPrime(s.Length) Then
                txtKeys.SelectionColor = Color.GreenYellow
            Else
                txtKeys.SelectionColor = Color.Black
            End If
        End If
        iPos += s.Length + 1
    Next
    txtKeys.Select(iStart, 0)
End Sub

コメント不足でごめんなさい!大きな.textプロパティに適用すると、これは非常に非効率になると思いますが、これはテキストボックスの使用目的ではありません。

于 2010-10-18T10:24:29.737 に答える