当文本等于某事时,我需要在富文本框中更改一个单词的颜色,例如,如果用户输入" Pink"文字是粉红色的,但只有粉红色。
如何实现这一目标?
答案 0 :(得分:3)
如@Kilazur在其评论中所述,您需要选择单词并设置SelectionColor
。
以下是一个例子:
Dim word As String = "word"
Dim index As Integer = Me.RichTextBox1.Text.IndexOf(word)
Do While (index > -1)
Me.RichTextBox1.Select(index, word.Length)
Me.RichTextBox1.SelectionColor = Color.Pink
index = Me.RichTextBox1.Text.IndexOf(word, (index + word.Length))
Loop
答案 1 :(得分:0)
您可以在选择感兴趣的文本后使用SelectionColor属性。
您可以随时查找文本,但TextChanged事件似乎是一个好时机(尽管如果你有很多文本可能会很慢)
Private Sub RichTextBox1_TextChanged(sender As Object, e As EventArgs) Handles RichTextBox1.TextChanged
FindWords(RichTextBox1, "Pink", Color.Pink)
End Sub
Private Sub FindWords(rtb As RichTextBox, word As String, wordColour As Color)
'store the selection before any change was made so we can set it back later
Dim selectionStartBefore As Integer = rtb.SelectionStart
Dim selectionLengthBefore As Integer = rtb.SelectionLength
Dim selection As Integer
'loop through finding any words that match
selection = rtb.Text.IndexOf(word)
Do While selection >= 0
rtb.SelectionStart = selection
rtb.SelectionLength = word.Length
rtb.SelectionColor = wordColour
selection = rtb.Text.IndexOf(word, selection + word.Length)
Loop
'put the selection back to what it was
rtb.SelectionStart = selectionStartBefore
rtb.SelectionLength = selectionLengthBefore
rtb.SelectionColor = rtb.ForeColor
End Sub