【问题标题】:RichTextBox does not support "\r" or CR and replaces "\r" with "\n" [duplicate]RichTextBox 不支持“\r”或 CR,并将“\r”替换为“\n”[重复]
【发布时间】:2019-09-10 20:39:08
【问题描述】:

我正在尝试在 Windows 窗体中为 RichTextBox 控件设置一个数据字符串,但 RichTextBox Text 属性将所有出现的“\r”替换为“\n”。

我也尝试重新替换“\n”: RichTextBox.Text.Replace("\n", "\r") 和 RichTextBox.Text.Replace("\n", "\r\n") 但不幸的是没有运气。

RichTextBox1.Text = "Abhi\rRa\r123"; //Textbox stores as Abhi\nRa\n123 
RichTextBox1.Text = this.RichTextBox1.Text.Replace("\n", "\r"); //Silly as .Text will eventually replace \r to \n.

如何允许将字符串存储在带有“\r”的文本框中,而不是让“\r”被“\n”替换????

提前致谢,

【问题讨论】:

  • 何必呢?需要时,您可以随时更换字符。 - 注意 RTB 是关于格式化文本的;它想在需要的地方换行并使用段落而不是换行符。和。直接更改文本会弄乱以前的格式..

标签: c# string winforms newline richtextbox


【解决方案1】:

RichTextBox 似乎有一个属性Text,但Rtf 属性是真正的也是唯一存储文本的地方。

当您添加包含\r(或\r\n)的文本时,它将在Rtf 属性中转换\par。当您将Text 复制回某处时,它将从Rtf 重建,将\par 替换为常规RTB 换行符,即@987654331 @。

所以:它理解\r,但它不存储它。

(顺便说一句:如果添加包含相反序列的文本:\n\r,它将被转换为两个\pars。)

因此,如果您想保留\r,请在从Text 复制后使用Replace("\r","\n") 切换回来,或者将其存储在其他地方。

【讨论】:

  • 我需要在前端文本框中用 '\r' 显示这个字符串。即使我最终将它存储在其他地方,我也需要在将其显示给用户之前将其填充到文本框中。
  • 好吧,无论如何,您永远无法“看到”格式化字符。那么我需要在前端文本框中用'\r'显示这个字符串是什么意思??
  • "show this string with '\r' in front end textbox"意味着我需要在字符串中保留\r,而字符串显示在文本框中,\r 在下一个中生成以下字符串线。例如:假设字符串是:“Abhi\rRana”然后在文本框中我需要在 1 行显示 Abhi,在下一行显示 Rana,这里 \r 的行为就像 \n 是我正在考虑的。
  • 那么实际的 TextBoxes 和 RichTextboxes 都会这样做,不是吗?这两个字符在这里是等价的。当然,使用 TextBox 时必须开启MuliLine..
  • 不,这就是重点,到目前为止,富文本框将“Abhi\rRana”转换为“Abhi\nRana”,然后在第一行显示 Abhi,在下一行显示 Rana。但是我的项目中有一个功能可以跟踪段结束分隔符是否是换行回车。例如:010 即“\n”或 013 即“\r”。截至目前,我希望段分隔符为 013,即“\r”,但富文本框会自动将其转换为 010,即“\n”。
猜你喜欢
  • 1970-01-01
  • 2011-06-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多