C# RichTextBox不支持“\r";或CR,并替换“\r";加上\";

C# RichTextBox不支持“\r";或CR,并替换“\r";加上\";,c#,string,winforms,newline,richtextbox,C#,String,Winforms,Newline,Richtextbox,我试图在windows窗体中为RichTextBox控件设置一个数据字符串,但RichTextBox文本属性将所有出现的“\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 RichTextB

我试图在windows窗体中为RichTextBox控件设置一个数据字符串,但RichTextBox文本属性将所有出现的“\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”


提前感谢,

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

添加包含
\r
(或
\r\n
)的文本时,它将转换为
\par
,位于
Rtf
属性中。当您将
文本
复制回某个地方时,它将从
Rtf
重建,用常规RTB换行符替换
\par
,即
\n

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

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


因此,如果要保留
\r
文件,请在从
文本中复制后使用
替换(“\r”,“\n”)
,或者将其存储在其他地方。

何必麻烦呢?需要时,您可以随时将字符替换回原处。-注意RTB是关于格式化文本的;它希望在需要的地方包装文本,并使用段落而不是换行符。和。直接更改文本将打乱以前的格式。我需要在前端文本框中用“\r”显示此字符串。即使我将它存储在其他地方,最后我还是需要在文本框中填充它,然后再将其显示给用户。那么,我需要在前端文本框中显示带“\r”的字符串是什么意思呢?“在前端文本框中显示带“\r”的字符串”意味着,当字符串显示在文本框中时,我需要在字符串中保留\r,并在下一行中生成以下字符串。例如:假设字符串是:“Abhi\rRana”,那么在文本框中,我需要在1行中显示Abhi,在下一行中显示Rana,这里\r的行为就像\n是我所想的一样。实际上的文本框和RichTextBox都是这样做的,不是吗?这两个字符在这里是等价的。当然,当使用文本框时,您必须打开
MuliLine
。不,这就是这里的重点,现在rich TextBox将“Abhi\rRana”转换为“Abhi\nRana”,然后在第一行显示Abhi,在下一行显示Rana。但在我的项目中有一个功能可以跟踪段结束分隔符是否为换行符。例如:010即“\n”或013即“\r”。现在,我希望段分隔符为013,即“\r”,但RichTextBox会自动将其转换为010,即“\n”。