Я использую 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
)? Это поведение где-то задокументировано? Могу ли я рассчитывать на то, что так всегда будет?
Случай, который я разместил здесь, является моей попыткой разобраться в проблеме, с которой я столкнулся при работе с одной из моих форм в другом проекте, поэтому я был бы признателен за любую информацию по этой проблеме.