Vb.net 修改.net RichTextBox

Vb.net 修改.net RichTextBox,vb.net,richtextbox,Vb.net,Richtextbox,我必须用RichTextBox做一些特殊的事情。我必须添加语法突出显示,并且我需要能够在每次按键时找出在什么位置添加/删除/插入了什么字符。是否有一些方法可以编辑现有的,或者是否有开源(.net兼容,最好是VB.net)可供下载?我已经试着自己做了,问题是,它必须让每个功能正常可用,而我没有足够的时间来实现所有这些 谢谢 这里没有必要重新发明轮子。你有两个选择来做这件事。首先,您可以挂接RichTextBox引发的事件,并在其中执行所需操作: Private Sub RichTextBox1_T

我必须用RichTextBox做一些特殊的事情。我必须添加语法突出显示,并且我需要能够在每次按键时找出在什么位置添加/删除/插入了什么字符。是否有一些方法可以编辑现有的,或者是否有开源(.net兼容,最好是VB.net)可供下载?我已经试着自己做了,问题是,它必须让每个功能正常可用,而我没有足够的时间来实现所有这些


谢谢

这里没有必要重新发明轮子。你有两个选择来做这件事。首先,您可以挂接RichTextBox引发的事件,并在其中执行所需操作:

Private Sub RichTextBox1_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles RichTextBox1.TextChanged
    'Add code to figure out what changed
    'This will most likely involve an variable storing the original text and comparing it to what the
    'RichTextBox now contains
End Sub
这有几个问题。如果您必须在许多表单中使用该功能,那么您将开始到处复制代码。您还需要一些辅助变量来跟踪此数据

更好的解决方案是创建自己的RichTextBox类。显然,您不想从头开始,因此可以从现有类继承,然后按照您的意愿扩展它

Public Class MyRichTextBox
    Inherits System.Windows.Forms.RichTextBox

    Private oldText As String

    Protected Overrides Sub OnTextChanged(ByVal e As System.EventArgs)
        MyBase.OnTextChanged(e)

        If Me.Text <> oldText Then
            'Figure out what changes were made
        End If

        oldText = Me.Text
    End Sub

    Public Sub SyntaxHighlighting()
        'Add code here to highlight syntax within the textbox
    End Sub
End Class
公共类MyRichTextBox
继承System.Windows.Forms.RichTextBox
私有旧文本作为字符串
受保护的覆盖子ContextChanged(ByVal e作为System.EventArgs)
MyBase.OnTextChanged(e)
如果是我,那就发短信吧
“弄清楚发生了什么变化
如果结束
oldText=Me.Text
端接头
公共子语法表()
'在此处添加代码以突出显示文本框中的语法
端接头
末级
编译MyRichTextBox后,它应该会显示在工具箱选项卡上,然后您可以将其拖放到表单上