Ответ 1
Свойство RichTextBox.Text преобразует назначенную строку в документ rtf в соответствии с кодами формата Rtf, указанными в RichTextBox.Rtf. Так как экземпляр "rtb" не инициализируется, коды формата "Rtf" пустые, и это просто возвращает ваш вход. После инициализации "rtb" он содержит пустой документ rtf (с кодами формата), который является таким же (и правильным) поведением как "richTextBox1".
Результаты:
preinit rtb.Rtf : ''
postinit rtb.Rtf : '"{\\rtf1\\ansi\\ansicpg1252\\deff0\\deflang1033{\\fonttbl{\\f0\\fnil\\fcharset0 Microsoft Sans Serif;}}\r\n\\viewkind4\\uc1\\pard\\f0\\fs17\\par\r\n}\r\n"'
richTextBox1.Rtf : '"{\\rtf1\\ansi\\ansicpg1252\\deff0\\deflang1033{\\fonttbl{\\f0\\fnil\\fcharset0 Microsoft Sans Serif;}}\r\n\\viewkind4\\uc1\\pard\\f0\\fs17\\par\r\n}\r\n"'
richtextBox1.Rtf with cheese : '"{\\rtf1\\ansi\\deff0{\\fonttbl{\\f0\\fnil\\fcharset0 Microsoft Sans Serif;}}\r\n\\viewkind4\\uc1\\pard\\lang1033\\f0\\fs17 Cheese\\par\r\nWhiz\\par\r\n}\r\n"'
код:
void Form1_Load(object sender, EventArgs e)
{
TestIt();
}
public void TestIt()
{
string enl = "Cheese" + Environment.NewLine + "Whiz";
RichTextBox rtb = new RichTextBox();
MessageBox.Show("preinit rtb.Rtf : '" + rtb.Rtf + "'");
this.Controls.Add(rtb);
MessageBox.Show("postinit rtb.Rtf : '" + rtb.Rtf + "'");
MessageBox.Show("richTextBox1.Rtf : '" + richTextBox1.Rtf + "'");
rtb.Text = enl;
string ncr = rtb.Text;
MessageBox.Show(string.Format("rtb: {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\nWhiz
---
False
True
False
*/
richTextBox1.Text = enl;
MessageBox.Show("richTextBox1.Rtf with cheese : '" + richTextBox1.Rtf + "'");
string ncr2 = richTextBox1.Text;
MessageBox.Show(string.Format("richTextBox1: {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
*/
}