【发布时间】:2010-12-17 14:33:20
【问题描述】:
我正在开发一个程序,我正在使用一个包含一些 \n 的字符串 (generatedCode) 在我正在使用它的文本框中输入一个换行符 (textBox1.Text = generatedCode),但是当我正在运行程序,而不是打破那条线,我看到的是一个正方形。
请记住,我已将 textBox 的 Multiline 值设置为 True。
【问题讨论】:
我正在开发一个程序,我正在使用一个包含一些 \n 的字符串 (generatedCode) 在我正在使用它的文本框中输入一个换行符 (textBox1.Text = generatedCode),但是当我正在运行程序,而不是打破那条线,我看到的是一个正方形。
请记住,我已将 textBox 的 Multiline 值设置为 True。
【问题讨论】:
将 \n 替换为 \r\n - 这就是 Windows 控件表示换行符的方式(但请参阅底部的注释):
textBox1.Text = generatedCode.Replace("\n", "\r\n");
或
textBox1.Text = generatedCode.Replace("\n", Environment.NewLine);
注意:正如 cmets 中所讨论的,您可能想使用Environment.NewLine。但目前尚不清楚 - 当 Windows 窗体控件不在 Windows 上运行时,它们应该使用什么行分隔符并没有明确定义。他们应该使用平台默认值还是 Windows 平台(因为它是 Windows GUI 控件的一个端口)? MSDN 中的示例之一确实使用了Environment.NewLine,但我之前在 MSDN 中看到过非常错误的示例,并且文档没有说明应该使用的示例。
在理想的世界中,我们只有一个行分隔符 - 即使在第二好的世界中,每种情况都会清楚地定义它所期望的行分隔符...
【讨论】:
System.Environment.NewLine。
Environment.NewLine 来编写文本文件,但我对 WinForms GUI 不太确定。警告:我实际上不知道 Mono 在 Linux 上对此做了什么。
因为使用 \n 在眼睛上更容易(特别是在格式化时),而且有时您无法控制源字符串的构造方式 - 我发现最佳做法是使用:TextBox1.Text = str.Replace("\r\n", "\n").Replace("\n", Environment.NewLine);
【讨论】:
通常\r\n 会在文本框中给我换行。尝试用 \r\n 替换您的 \n 只是要注意不要混合使用 \r\n 和 \n
【讨论】:
添加一个回车符(\r),它应该可以工作:
TextBox1.Text = "First line\r\nSecond line";
【讨论】: