我希望能够在不影响当前.SelectionBackColor或.SelectionColor的情况下突出显示(选择)RichTextBox中的文本
我有一个RichTextBox,其中包含很多文本。
我有一个ListView,其中包含在ListView中具有不同.BackColor和.ForeColor的字符串/单词的列表。
我遍历ListView项,并使用.SelectionBackColor和.SelectionColor设置文本颜色以匹配ListView中的.BackColor和.ForeColor,突出显示RichTextBox中的相应文本。
For Each verItem As ListViewItem In lvVer.Items
startindex = 0
While startindex < rtbMain.TextLength
Dim wordStartIndex As Integer = rtbMain.Find(verItem.Text, startindex, RichTextBoxFinds.None)
If wordStartIndex <> -1 Then
rtbMain.SelectionStart = wordStartIndex
rtbMain.SelectionLength = verItem.Text.Length
rtbMain.SelectionBackColor = verItem.BackColor
rtbMain.SelectionColor = verItem.ForeColor
Else
Exit While
End If
startindex += wordStartIndex + verItem.Text.Length
End While
Next
这一切都很好,但是我希望能够在列表视图中选择一个项目,然后在RichTextBox中以标准突出显示(蓝色背景,白色文本)颜色突出显示匹配的文本对象,同时仍然保留下面的原始颜色
如果我使用鼠标突出显示RichTextBox中的文本,它会以通常的Windows方式(蓝色背景,白色文本)暂时突出显示。如果再在RichTextBox中的其他位置单击鼠标,则在字符串上设置的原始颜色仍然存在。我想在代码中复制这种行为。
如果通过代码rtbMain.Select(wordStartIndex, verItem.Text.Length)
“选择”文本,则该文本不会突出显示。它甚至也没有在视觉上被选中。显然,我可以设置一个新的.SelectionBackColor和.SelectionColor,但是那样我会丢失原来的颜色。
是否可以通过编程方式在RichTextBox文本上滚动鼠标,并选择并突出显示文本而不会影响基本的原始颜色?
答案 0 :(得分:0)
我找到的答案虽然很简单,但并不明显。
我必须将RichTextBox HideSelection属性设置为False。我知道,当您知道该属性存在时,这是显而易见的,但是,即使将其设置为false,当我双击一个单词或在其上滚动鼠标时,该选择也是可见的?当我在代码中进行操作时,它只是不可见。