【问题标题】:How To Use \n In a TextBox如何在文本框中使用 \n
【发布时间】:2010-12-17 14:33:20
【问题描述】:

我正在开发一个程序,我正在使用一个包含一些 \n 的字符串 (generatedCode) 在我正在使用它的文本框中输入一个换行符 (textBox1.Text = generatedCode),但是当我正在运行程序,而不是打破那条线,我看到的是一个正方形。

请记住,我已将 textBox 的 Multiline 值设置为 True

【问题讨论】:

    标签: c# string newline


    【解决方案1】:

    将 \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 中看到过非常错误的示例,并且文档没有说明应该使用的示例。

    在理想的世界中,我们只有一个行分隔符 - 即使在第二好的世界中,每种情况都会清楚地定义它所期望的行分隔符...

    【讨论】:

    • 基本相同,但我认为使用 Environment.NewLine 而不是 \r\n 可能更安全。
    • 嗯,问题 - “\r\n” 应该是 System.Environment.NewLine 吗?我很欣赏它们是相同的(ish),它更像是一种编码标准类型的问题
    • 鉴于“.NET”并不意味着“Windows”,我强烈同意使用System.Environment.NewLine
    • 这完全取决于其他平台决定为 Windows 窗体控件做什么。鉴于它们是 Windows 窗体控件,它们很可能会复制“\r\n”的用法。老实说,感觉就像 Mono 在这块石头和坚硬的地方之间被卡住了。例如,我肯定会使用Environment.NewLine 来编写文本文件,但我对 WinForms GUI 不太确定。警告:我实际上不知道 Mono 在 Linux 上对此做了什么。
    【解决方案2】:

    因为使用 \n 在眼睛上更容易(特别是在格式化时),而且有时您无法控制源字符串的构造方式 - 我发现最佳做法是使用:
    TextBox1.Text = str.Replace("\r\n", "\n").Replace("\n", Environment.NewLine);

    【讨论】:

    • s = s.Replace("\r", "").Replace("\n", Environment.NewLine);
    • @SashaBond IMO 好多了。消除了 \r 本身存在的边缘情况,同时也巧妙地处理 \n
    • 那是一个旧线程......无论如何 - \n 和 \r\n 存在并且到处混合......如果出于某种原因只有 \r - 这可能是故意的,因为我不知道任何系统of 只使用回车来表示换行符。除非我有上下文并且知道它们可能存在并且它们确实代表换行符,否则我会将孤立的 '\r' 留在它们的位置。
    【解决方案3】:

    通常\r\n 会在文本框中给我换行。尝试用 \r\n 替换您的 \n 只是要注意不要混合使用 \r\n\n

    【讨论】:

    • 好点!只要确保 textBox1.Text = generatedCode.Replace("\r\n", "\n");获取任何现有的然后执行 textBox1.Text = generatedCode.Replace("\n", "\r\n"); Winform 仍然摇滚!
    【解决方案4】:

    添加一个回车符(\r),它应该可以工作:

    TextBox1.Text = "First line\r\nSecond line";
    

    【讨论】:

      猜你喜欢
      • 2015-09-22
      • 1970-01-01
      • 2021-10-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-07
      • 1970-01-01
      • 2011-10-29
      相关资源
      最近更新 更多