RichTextBox Преобразование новой строки?

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

Я опубликовал здесь свою попытку разобраться в проблеме, которая возникла у меня с одной из моих форм в другом проекте, поэтому я буду признателен за любой материалы по этой проблеме.

13
задан NickAldwin 15 August 2011 в 21:23
поделиться