为什么RichTextBox替换<cr>字符?</cr>

时间:2013-10-11 23:33:30

标签: vb.net richtextbox

我注意到RichTextBox用LF或空字符串替换CR。 VB示例:

Dim s1 As String = vbCr
RichTextBox1.Text = s1
Dim s2 String = RichTextBox1.Text

s1 = s2 => False
s1 => <CR>
s2 => <LF>

或者

Dim s1 As String = vbCrLf
RichTextBox1.Text = s1
Dim s2 String = RichTextBox1.Text

s1 = s2 => False
s1 => <CR><LF>
s2 => <LF>

为什么它的行为与此类似,是否有改变它的方法,强制它正确存储这些字符(如果它对输入文本进行任何其他更改以防止它)?

我正在创建与其他应用程序通信的消息,因此不要更改任何字符,因为消息将被拒绝。

2 个答案:

答案 0 :(得分:0)

您可以使用RichTextBox控件的Rtf属性。但是,如果您需要完全控制提交的内容,则RichTextBox不是最佳选择。它将输入的文本存储在其自己的内部数据结构中,并且更像黑盒子。无论如何,您的业务需求是什么?

答案 1 :(得分:0)

由于RTF是一种标记语言(如HTML),因此行结尾几乎没有任何意义。 RTF使用\par开始新段落。

来自specs

  

回车(字符值13)或换行符(字符值   如果字符前面有,则将被视为\ par控件   反斜杠。你必须包括反斜杠;否则,RTF忽略   控制字。 (您可能还想插入一个   至少每255个没有反斜杠的回车/换行对   通过通信线路传输更好文本的字符。)

由于有多个字符将被\par替换,因此您永远无法取回原始字符。

因此RichTextBox控件在这里是错误的选择。如果你能提供更多有关你的目标的信息,那么有人可能会提出更好的方法。