【发布时间】:2011-09-02 05:52:26
【问题描述】:
我必须用 RichTextBox 做一些特别的事情。我必须添加语法突出显示,并且我需要能够找出每次按下某个键时在哪个位置添加/删除/插入了哪些字符。是否有某种方法可以编辑现有的,或者是否有可供下载的开源(.net 兼容,最好是 VB.net)?我尝试过自己制作,但问题是,它必须使每个功能都正常可用,而我没有足够的时间来实现所有这些。
谢谢!
【问题讨论】:
标签: vb.net richtextbox
我必须用 RichTextBox 做一些特别的事情。我必须添加语法突出显示,并且我需要能够找出每次按下某个键时在哪个位置添加/删除/插入了哪些字符。是否有某种方法可以编辑现有的,或者是否有可供下载的开源(.net 兼容,最好是 VB.net)?我尝试过自己制作,但问题是,它必须使每个功能都正常可用,而我没有足够的时间来实现所有这些。
谢谢!
【问题讨论】:
标签: vb.net richtextbox
这里没有必要重新发明轮子。您有两种选择。第一个是您可以挂钩到 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 后,它应该会显示在工具箱选项卡上,然后您可以将其拖放到表单上。
【讨论】: