0

我注意到 RichTextBox 将 CR 替换为 LF 或空字符串。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>

为什么它会有这样的行为,有没有办法改变它,强制它正确存储这些字符(如果它对输入文本进行任何其他更改以防止它)?

我正在创建用于与另一个应用程序通信的消息,重要的是不要更改任何字符,因为消息将被拒绝。

4

2 回答 2

0

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

于 2013-10-11T23:57:45.017 回答
0

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

规格

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

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

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

于 2013-10-12T00:32:01.553 回答