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

时间:2016-03-29 02:35:51

标签: vb.net

我正在尝试在文本框中添加语法突出显示功能,但我遇到了问题。经过几个小时的搜索,我发现了一篇与我一直在寻找的帖子。以下是搜索列表中的单词的代码,并突出显示它们:

        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)

即使我点击'空格',它仍会突出显示所有文本框。还有什么我可以做的,让它只选择当前行并突出显示它吗?

1 个答案:

答案 0 :(得分:0)

您需要从当前行开始,然后突出显示该代码中的其余文本。从GetFirstCharIndexOfCurrentLine中找到VbNewLine并使用它。