我正在使用WinForms RichTextBox。看起來,當RichTextBox在窗體上時,\r\n
被轉換爲\n
。這裏有一個測試:RichTextBox換行符?
我有兩個富文本框。一個是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
)?這種行爲是否記錄在某處?我可以依靠它總是這樣嗎?
我在這裏發佈的案例是我試圖弄清楚我在一個不同的項目中使用我的表單時遇到的問題的底部,因此我非常感謝關於此問題的任何輸入。
請記住以前看過這個,但是我只是繞過它: - /期待看到答案 – GreyCloud