首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >VB.NET:语法突出显示

VB.NET:语法突出显示
EN

Stack Overflow用户
提问于 2010-06-26 04:36:56
回答 3查看 2.7K关注 0票数 3

我开始学习VB.NET,并尝试做一个语法亮点。当我设置所选文本的颜色时出现问题。它改变了整个richtextbox的内容。

代码语言:javascript
代码运行次数:0
运行
复制
Private Sub txtText_TextChanged_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles rtbText.TextChanged
    Dim keywords As ArrayList
    Dim index As Integer
    Dim keyboardCursorPosition As Integer

    keywords = New ArrayList()

    keywords.Add(New Keyword("<?php", Color.Red))
    keywords.Add(New Keyword("echo", Color.Blue))
    keywords.Add(New Keyword("?>", Color.Red))

    keyboardCursorPosition = rtbText.SelectionStart

    For Each keyword As Keyword In keywords
        index = rtbText.Text.IndexOf(keyword.getKey())

        If index <> -1 Then
            rtbText.Select(index, keyword.getKey().Length)
            rtbText.SelectionColor = keyword.getColor()

            rtbText.DeselectAll()
            rtbText.SelectionStart = keyboardCursorPosition
        End If

    Next
End Sub
EN

回答 3

Stack Overflow用户

发布于 2010-06-26 04:50:49

你已经很接近了。不要忘记恢复SelectionColor:

代码语言:javascript
代码运行次数:0
运行
复制
    Dim prevColor As Color = rtbText.SelectionColor
    For Each keyword As KeyWord In keywords
        '' etc...
    Next
    rtbText.SelectionColor = prevColor

顺便说一句:保持代码的整洁。rtb的消息处理程序不应命名为txtXxxx。这些小细节迟早会把你搞得一团糟(对我来说就是这样,找错了理由)。还要将关键字初始化移出该方法。

票数 2
EN

Stack Overflow用户

发布于 2010-06-26 07:00:59

好吧,试着重命名这个变量,看看是否有帮助

代码语言:javascript
代码运行次数:0
运行
复制
For Each key As KeyWord In keywords
票数 0
EN

Stack Overflow用户

发布于 2015-01-09 11:19:16

这是一种非常糟糕的方式,如果你想突出显示语法,那么可以看看Scintilla API或附加组件。它是免费的,并附带了600个工具来制作你自己的代码编辑器或预集成开发环境。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3121280

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档