1

我目前正在开发“所见即所得”(所见即所得)HTML 编辑器。我将其用于个人用途,以扩大我对 VB.Net 的理解。我遇到的问题是当我使用这段代码时:

Dim insertText = "<h1>Example Header</h1>"
Dim insertPos As Integer = RichTextBox1.SelectionStart
RichTextBox1.Text = RichTextBox1.Text.Insert(insertPos, insertText)
RichTextBox1.SelectionStart = insertPos + insertText.Length

通过添加到 RichTextBox 中的文本,代码将完美运行;但是,如果我犯了一个错误并尝试调用 Undo() 方法,则不会发生任何事情。守则将留在那里。我认为这是因为文本既没有输入也没有粘贴到 RichTextBox 中。

我想要完成的工作:我需要一个代码片段,它允许我将预定义的 HTML 代码粘贴或添加到光标所在的 RichTextBox 中(如上),并且还能够撤消它。

此外,如果有帮助的话,该项目使用 RichTextBox 控件,用户可以在其中键入他/她自己的 HTML 文档,并且可以单击按钮以将标题、按钮、链接等添加到文档中。

4

2 回答 2

1

替换文本会重置撤消/重做堆栈,因此最好尽量避免这种情况。

简单的解决方法:

Dim insertText As String = "<h1>Example Header</h1>"
RichTextBox1.SelectedText = insertText
于 2013-11-12T22:15:26.910 回答
1

使用RichTextBox.Selected*属性设置可以撤消的文本或更改颜色等。

Private Sub InsertTextInRTB(ByVal text As String, ByVal insertPos As Integer)
    RichTextBox1.SelectionStart = insertPos
    RichTextBox1.SelectionLength = 0
    RichTextBox1.SelectedText = text
End Sub

Private Sub InsertTextInRTB(ByVal text As String)
    RichTextBox1.SelectionLength = 0
    RichTextBox1.SelectedText = text
End Sub

用法:

    Dim insertText = "<h1>Example Header</h1>"
    InsertTextInRTB(insertText)              '<-- to insert at current cursor position
    InsertTextInRTB(insertText, 100)         '<-- to insert at some other position 
于 2013-11-13T07:42:26.637 回答