VB.Net如何仅突出显示当前行

VB.Net如何仅突出显示当前行,vb.net,Vb.net,我试图在文本框中添加语法突出显示功能,但遇到了一个问题。经过几个小时的搜索,我找到了一篇贴子,上面写着我要找的东西。以下是在列表中搜索单词并突出显示它们的代码: If editorBox.Text.Length > 0 Then Dim selectStart As Integer = editorBox.SelectionStart editorBox.Select(0, editorBox.Text.Length) e

我试图在文本框中添加语法突出显示功能,但遇到了一个问题。经过几个小时的搜索,我找到了一篇贴子,上面写着我要找的东西。以下是在列表中搜索单词并突出显示它们的代码:

        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)

即使我点击“空格”,它仍然会突出显示所有文本框。我还可以做些什么来让它只选择当前行并高亮显示它?

您需要从当前行开始,这样做了,但是您可以高亮显示代码中的其余文本。从GetFirstCharIndexOfCurrentLine中查找VbNewLine并使用它。

是否在editorBox中。选择(位置…),因为位置为0?如果是这样,我会用currentline替换pos吗?ThanksStart位置很好,您可以使用text.length来选择其余文本。您似乎在这方面付出了一些努力,但我仍然建议您使用专门为语法突出显示而构建的工具。使用
Select
SelectionStart
/
-Length
等会变慢,因为控件实际上会绘制选择,即使速度足够快,您可能看不到。我也尝试过一次自己的语法高亮显示,最后我发现了闪烁网,这是一个基于本机闪烁控件的.NET语言控件。它完美地完成了语法高亮显示,没有任何延迟或内存消耗。我是否能够创建要突出显示的自定义关键字?无论如何,谢谢你的建议。我以前听说过,但从未真正了解如何使用它。我来试一试。是的,你是。了解如何创建自定义Lexer。闪烁是高度可定制的。我似乎找不到2.6的例子,但是。也。