我正在尝试将a
替换为RichTextBox中的4
。它将文本“a”替换为“4”而不是“4nsi4nsicpg1252ng16393rd4r”。
这是我正在使用的代码:
RichTextBox1.Rtf = RichTextBox1.Rtf.Replace("a", "4")
有关如何用“4”替换“a”的任何帮助?顺便说一下,我可以用“test”替换“a”而不是“4”
答案 0 :(得分:5)
RTF(富文本格式)是文档和控制字文本的混合,用于描述如何格式化文本。 RichTextBox1.Rtf
属性返回RTF,而不是纯文本,因此您的Replace
语句正在破坏某些RTF控制字。例如,您的RTF可能会启动:
{\rtf1\ansi\ansicpg1252 ...
\rtf1
,\ansi
和\ansicpg1252
是RTF控制字。您的Replace
已将其更改为:
{\rtf1\4nsi\4nsicpg1252 ...
由于\4nsi
和\4nsicpg1252
不再是有效的RTF控制字,它们最终会显示为文本 - 减去用于指示控制字开头的\
字符
RichTextBox.Text
属性将返回纯文本,因此您可以尝试使用它,但我怀疑这也会删除已应用于文档的任何格式:
RichTextBox1.Text = RichTextBox1.Text.Replace("a", "4")
答案 1 :(得分:0)
可以在richtextbox控件中执行查找/替换以保留格式。
Private Sub Replace(ByVal findText As String, ByVal replacement As String)
Dim startIndex = 0
Dim foundIndex = RichTextBox1.Find(findText, startIndex, RichTextBoxFinds.None)
While foundIndex >= 0
RichTextBox1.SelectedText = replacement
startIndex = foundIndex + replacement.Length
foundIndex = RichTextBox1.Find(findText, startIndex, RichTextBoxFinds.None)
End While
End Sub
可以使用第二个richtextbox将多个更改组合到一个撤消块中,如下所述: https://stackoverflow.com/a/5097179