修改.net RichTextBox

时间:2011-09-01 21:34:28

标签: vb.net richtextbox

我必须使用RichTextBox做一些特殊的事情。我必须添加语法高亮,我需要能够找到每次按下键时在什么位置添加/删除/插入的字符。有没有办法编辑现有的,或者是否有可供下载的开源(.net兼容,最好是VB.net)?我已经尝试过制作我自己的,问题是,它必须具备通常可用的所有功能,而且我没有足够的时间来实现所有这些功能。

谢谢!

1 个答案:

答案 0 :(得分:2)

这里没有必要重新发明轮子。这有两种选择。首先,您可以浏览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后,它应显示在“工具箱”选项卡上,然后您可以拖动&amp;把它放到你的表格上。