C#換行符號顯示錯誤問題的解決方法
筆者在日常編程工作中,遇到C#換行符號無法正常顯示的問題,究其原因,很可能是在保存TextBox和RichTextBox中的文本數據的時候,經常會保存無效字符。所以有了以下的解決方法。
C#換行符號的問題
C#中,一個label的text屬性在程序中硬編碼成"aa\nbb"的字樣時,顯示的效果是可以換行的,但這個字符串放到資源文件中,再從程序中load時,顯示時就把\n也給顯示出來了。該怎么解決?
C#換行符號問題的解決辦法
使用Environment.NewLine
比如
- textBox1.Text="First Line" + Environment.NewLine + "Second Line";
- http://www.geekpedia.com/KB19_How-can-I-insert-a-new-line-in-a-TextBox.html
另外,由于在保存TextBox和RichTextBox中的文本數據的時候,經常會保存無效字符,
可以用以下代碼來替代WriteLine。
- FileStream fs = new FileStream(saveFileDialog1.FileName, FileMode.OpenOrCreate,FileAccess.ReadWrite);
- StreamWriter sw = new StreamWriter(fs, Encoding.UTF8);
- sw.Write(txtReturn.Text.Replace("\n",Environment.NewLine)); // Environment.NewLine is the real trick
- sw.Dispose(); sw = null;
- fs.Dispose(); fs = null;
備注
對于非 Unix 平臺,NewLine 包含“\r\n”的字符串;對于 Unix 平臺,包含“\n”的字符串。
NewLine 的屬性值是一個專門為當前平臺和 .NET Framework 實現而自定義的常數。
NewLine 提供的功能常常是換行符 (newline)、換行符 (line feed)、分行符、回車符、CRLF 和行尾等術語表示的含義。
NewLine 可以與語言特定的換行支持一起使用,如 Microsoft C# 和 C/C++ 中的“\r”和“\n”,或 Microsoft Visual Basic 中的 vbCrLf。
NewLine 自動附加到 System.Console.WriteLine 和 System.Text.StringBuilder.AppendLine 方法處理的文本。
【編輯推薦】