根据在DataGridView中选择的内容,以编程方式突出显示 RichTextBox中包含的字符串的一部分。
查看截图以获取更直观的示例
如您所见,当选择选项类型(EC - Electrical)时,其选项将显示在右侧的另一个DataGridView中。从那里,用户可以检查他希望包含在传送带功能摘要中的那些(在这种情况下是Photoeye)并且它会突出显示。
每次Option Type DataGridView都有一个selectionchanged事件时,就会执行此方法。
Private Sub SummaryOptionsHighlight()
Dim strToFind As String = ""
Dim textEnd As Integer = rtbSummary.TextLength
Dim index As Integer = 0
Dim lastIndex As Integer = 0
'Builds the string to find based on custom classes - works fine
For Each o As clsConveyorFunctionOptions In lst_Options
If o.Included Then
If strToFind.Length <> 0 Then strToFind += ", "
If o.Optn.IsMultipleQty And o.Qty > 0 Then
strToFind += o.Optn.Description & " (" & o.Qty & "x)"
Else
strToFind += o.Optn.Description
End If
End If
Next
'Retrieves the last index of the found string: ex. Photoeye (3x)
lastIndex = rtbSummary.Text.LastIndexOf(strToFind)
'Find and set the selection back color of the RichTextBox
While index < lastIndex
rtbSummary.Find(strToFind, index, textEnd, RichTextBoxFinds.None)
rtbSummary.SelectionBackColor = SystemColors.Highlight
index = rtbSummary.Text.IndexOf(strToFind, index) + 1
End While
End Sub
正在进行的是突出显示,但更多的背景颜色设置为该选择。我说这个的原因是因为当我点击RichTextBox来表明它有焦点时,它并没有清除突出显示。也许有一个实际的突出显示而不是背景颜色选择?
查看差异:
选择背面颜色:
突出显示:
答案 0 :(得分:-2)
要突出显示,您只需要这样做:
if richtextbox1.text.contians("photoeye") then
richtextbox1.select("photoeye")
end if
这应该适用于你想要做的事情