【发布时间】:2011-08-15 16:45:51
【问题描述】:
我正在使用 WinForms RichTextBox。似乎当 RichTextBox 在表单上时,\r\n 被转换为\n。这是一个测试:
我有两个富文本框。一个是richTextBox1,放在表单上:
this.richTextBox1 = new System.Windows.Forms.RichTextBox();
this.SuspendLayout();
//
// richTextBox1
//
this.richTextBox1.Location = new System.Drawing.Point(37, 12);
this.richTextBox1.Name = "richTextBox1";
this.richTextBox1.Size = new System.Drawing.Size(100, 96);
this.richTextBox1.TabIndex = 0;
this.richTextBox1.Text = "";
另一个是rtb,是我现场创建的。当我运行这段代码时(在表单的加载事件中):
var rtb = new RichTextBox();
string enl = "Cheese" + Environment.NewLine + "Whiz";
rtb.Text = enl;
string ncr = rtb.Text;
MessageBox.Show(string.Format("{0}{1}{2}{3}---{4}{5}{6}{7}{8}{9}",
enl.Replace("\n", "\\n").Replace("\r", "\\r"), Environment.NewLine,
ncr.Replace("\n", "\\n").Replace("\r", "\\r"), Environment.NewLine,
Environment.NewLine,
(enl == ncr), Environment.NewLine,
enl.Contains(Environment.NewLine), Environment.NewLine,
ncr.Contains(Environment.NewLine)));
/*
Cheese\r\nWhiz
Cheese\r\nWhiz
---
True
True
True
*/
richTextBox1.Text = enl;
string ncr2 = richTextBox1.Text;
MessageBox.Show(string.Format("{0}{1}{2}{3}---{4}{5}{6}{7}{8}{9}",
enl.Replace("\n", "\\n").Replace("\r", "\\r"), Environment.NewLine,
ncr2.Replace("\n", "\\n").Replace("\r", "\\r"), Environment.NewLine,
Environment.NewLine,
(enl == ncr2), Environment.NewLine,
enl.Contains(Environment.NewLine), Environment.NewLine,
ncr2.Contains(Environment.NewLine)));
/*
Cheese\r\nWhiz
Cheese\nWhiz
---
False
True
False
*/
RichTextBox 似乎表现出一些奇怪的行为。当我将包含\r\n 的文本放入刚刚创建的框中时,它保持不变(仍然包含\r\n)。但是,当我将包含 \r\n 的文本放入表单的框中时,\r\n 会变成 \n。
我的问题:这种行为是否有原因(\r\n->\n)?这种行为是否记录在某处?我可以指望它总是这样吗?
我在此处发布的案例是我试图找出我在另一个项目中使用我的一个表单时遇到的问题,因此我非常感谢有关此问题的任何意见。
【问题讨论】:
-
记得以前看过这个,但是我只是绕过它:-/期待看到答案
标签: c# .net winforms richtextbox