我正在尝试在文本框中添加语法突出显示功能,但我遇到了问题。经过几个小时的搜索,我发现了一篇与我一直在寻找的帖子。以下是搜索列表中的单词的代码,并突出显示它们:
If editorBox.Text.Length > 0 Then
Dim selectStart As Integer = editorBox.SelectionStart
editorBox.Select(0, editorBox.Text.Length)
editorBox.SelectionColor = Color.White
editorBox.DeselectAll()
For Each oneWord As String In syntax
Dim pos As Integer = 0
Do While editorBox.Text.ToUpper.IndexOf(oneWord.ToUpper, pos) >= 0
pos = editorBox.Text.ToUpper.IndexOf(oneWord.ToUpper, pos)
editorBox.Select(pos, oneWord.Length)
editorBox.SelectionColor = Color.DodgerBlue
editorBox.SelectionFont = New Font(editorBox.SelectionFont, FontStyle.Bold)
pos += 1
Loop
Next
editorBox.SelectionStart = selectStart
editorBox.SelectionLength = 0
End If
我已经读过这篇文章了,我对其中的大部分内容都了如指掌。但是,截至目前,它选择整个文本框并突出显示它,再次搜索并着色所有单词。在连续50行之后,它变得非常糟糕且迟钝。我想如果我只选择当前行,它就不会有任何延迟。我尝试了以下方法,但它似乎不起作用:
editorBox.Select(editorBox.GetFirstCharIndexOfCurrentLine, editorBox.Text.Length)
即使我点击'空格',它仍会突出显示所有文本框。还有什么我可以做的,让它只选择当前行并突出显示它吗?
答案 0 :(得分:0)
您需要从当前行开始,然后突出显示该代码中的其余文本。从GetFirstCharIndexOfCurrentLine中找到VbNewLine并使用它。