【问题标题】:Why do c# textbox.AppendText() newlines disappear when using \n as line terminator?为什么使用 \n 作为行终止符时 c# textbox.AppendText() 换行符会消失?
【发布时间】:2010-11-05 09:41:06
【问题描述】:

我正在使用多行文本框,但我遇到了无法完全解释的行为。我用

 textbox.AppendText("line \n"); 

将新行追加到文本框。当使用这个 3 次时,我得到了

line 
line 
line

显示在文本框中。现在,我调整文本框的大小。文字变成了

line line line 

也就是说,换行符消失了。我知道我应该使用

 textbox.AppendText("line "+ Environment.Newline);

所以我知道如何解决这个问题。我想知道为什么在使用“\n”时,换行符最初会出现,但在调整大小时会消失。

【问题讨论】:

  • 我不认为它像下面解释的那么简单。 System.NewLine 在Windows 上“有效”,例如,因为\r\n 被删除后仍然存在。我现在在 UWP 和 Win10 中看到了这一点……例如,我将 "\r\nhenever" 分配给文本框的 SelectedText,SelectedText 值立即显示 "\r> henever"\n 去哪儿了?

标签: c# textbox multiline


【解决方案1】:

在调整大小时,“\n”字符被删除,因为调整大小还控制基于“\n”的新行创建和删除,System.Env.NewLine 永远不会被忽略。

【讨论】:

    【解决方案2】:

    而不是像这样的一行:

    textbox.AppendText("line \n"); 
    

    你应该改用这一行:

    textbox.AppendText("line "+ Environment.NewLine);
    

    这是因为 unix 的换行符是 \n,但对于非 unix(即 Windows)它是 \r\n。当框被调整大小时,系统换行符被替换,因此如果你只有\n,它会在调整大小时丢失。

    参考: MSDN: Environment.NewLine Property

    【讨论】:

      猜你喜欢
      • 2016-09-04
      • 1970-01-01
      • 2012-10-24
      • 2021-06-11
      • 1970-01-01
      • 1970-01-01
      • 2016-06-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多