【问题标题】:TextBox MultiLine within winforms applicationwinforms应用程序中的TextBox MultiLine
【发布时间】:2014-07-30 15:26:53
【问题描述】:

如何在 winforms 应用程序的文本框中插入新行:

 textBox2.Text += "a";
 textBox2.Text += "\n";
 textBox2.Text += "b"; 

但即使我将文本框设为多行,我也得到了一行:

我该如何解决这个问题?

【问题讨论】:

  • Windows 换行符是 CRLF。无论如何,您最好使用Environment.NewLine
  • 所以尝试附加这个:"\r\n" 或 Environment.NewLine

标签: c# .net string winforms escaping


【解决方案1】:

使用Environment.NewLine

textbox.Multiline = true;
textbox.Text += "a" + Environment.NewLine + "b";

【讨论】:

    【解决方案2】:

    对于 Windows 操作系统,您应该为换行写 \r\n

    对于 Mac OS,您应该只使用 \n

    Environment.NewLine 将适用于两种操作系统。因此,您可以使您的代码在两个平台上通用。因此,当您为这两个操作系统创建应用程序代码时,请避免在字符串中出现\n\r\n

    在您的情况下,您可以使用String.Format 来避免多重连接,这会在长时间使用时降低性能。

    textBox2.Text = String.Format("ABCD{0}XYZ", Environment.NewLine);
    

    如果您要连接一堆行,那么有更好的方法来做到这一点。您可以为此使用StringBuilder 类。

    StringBuilder sb = new StringBuilder();
    
    foreach(string line in Lines)
    {
        sb.AppendLine(line);
        //or 
        //sb.AppendFormat("My line: {0}{1}", line, Environment.NewLine);
    }
    textBox2.Text = sb.ToString();
    

    StringBuilder.AppendLine() 也可用于合并多行时添加行。

    【讨论】:

      【解决方案3】:

      正如 Brian 所说,您需要 CRLF,这意味着:

      textBox2.Text += "a";
      textBox2.Text += "\r\n";
      textBox2.Text += "b";
      

      但正如 Amir 正确所说,Environment.NewLine 也可以解决问题,您不必为“如何表示换行符”而烦恼。

      【讨论】:

      • 您不必为“换行符是如何表示的”而烦恼。 或者反过来说:以更多输入为代价,您将失去控制你实际得到什么。
      猜你喜欢
      • 2011-02-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-16
      • 1970-01-01
      相关资源
      最近更新 更多