OnChangedイベントのあるRichTextBoxがあります。OnChangedイベントは、RichTextBoxの各行を確認し、その行がプライムレングスの場合は赤に、そうでない場合は黒に色付けする必要があります。どうすればよいですか?インデックスaからインデックスbまで選択して選択色を設定することは可能だと思いますが、カーソル位置が失われると思います。カーソル位置も保持するにはどうすればよいですか?提案をありがとう。
2 に答える
1
を見てSelectionStart
、SelectionLength
強調表示するテキストを選択します。
カーソル位置を維持するには、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 に答える