【问题标题】:Why RichTextBox replaces <CR> characters?为什么 RichTextBox 替换 <CR> 字符?
【发布时间】:2013-10-12 09:45:40
【问题描述】:

我注意到 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>

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

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

【问题讨论】:

  • 这只是动物的工作方式,行尾是 vbLf,而不是通常在 Windows 其余部分中的 vbCrLf。这是如何发生的,已经消失在历史的迷雾中。你必须解决这个问题。

标签: vb.net richtextbox


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    来自specs

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-09-07
      • 2014-12-21
      • 1970-01-01
      • 1970-01-01
      • 2022-01-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多