【问题标题】:C# - Textbox Newline ProblemsC# - 文本框换行问题
【发布时间】:2010-07-08 20:25:42
【问题描述】:

我有一个文本框,我正在尝试使用以下代码行打印到它:

logfiletextbox.Text = logfiletextbox.Text + "\n\n\n\n\n" + o + " copied to " + folderlabel2.Text;

其中 folderlabel 2 显然是一个文本框。我放入的第一件事是相同的文本框,因此不会删除任何文本。过多的新行证明了我的问题,因为文本框中没有新行(是的,设置为多行)。 “o”是 FileInfo 数组中的 FileInfo 类型。

为什么这些换行符不会出现在文本框中?

【问题讨论】:

  • 插入文本框时需要使用CRLF对\r\n。
  • 在 UWP 的情况下,必须将 TextBox 显式设置为一种模式,如果它接受多行 AcceptsReturn="True"TextWrapping="Wrap" 它不关心 "\r\n" 与 "\n "。

标签: c#


【解决方案1】:

使用“\r\n”而不是“\n”。 Windows 文本框需要 CRLF 作为行终止符,而不仅仅是 LF。

您可能可以改用Environment.NewLine - 但我不知道Mono TextBoxes 在使用“\n”方面做了什么(这就是Environment.NewLine 在Linux 上的作用)盒子)。如果你使用 "\r\n" 它开始在最后添加额外的东西,那么这会破坏很多现有的应用程序 - 但如果它 requires "\r\n" 会破坏使用Environment.NewLine.

Environment.NewLine 是您运行的整个平台的默认新行 - 但是如果您使用的小部件工具包只做一件事,而文本文件通常做其他事情怎么办?坦率地说,这有点乱。如果有一个单独的 TextBox.NewLine 属性,不同的实现可以适当地处理,那就太好了。

【讨论】:

  • 或者更好的是,使用Environment.NewLine
  • 一个 TextBox 特定的 NewLine 属性会很好。我想知道允许表单应用程序将该属性设置为指定值是否有意义。 IE。如果您使用 TextBox 来显示文本以读取/写入数据库、Web 服务或换行约定实际上与您当前执行的平台无关的任何内容,那么允许开发人员设置 TextBox 可能是有意义的换行字符串以匹配源/目标文本。
【解决方案2】:

我相信 TextBox 想要一个 Environment.NewLine(应该是“\r\n”)

请注意,它必须是回车符 (\r) 后跟换行符 (\n)。如果您颠倒顺序,它将不起作用。

【讨论】:

    【解决方案3】:

    TextBox 控件在换行之前需要一个回车符 (0x0D 0x0A)。使用"\r\n"System.Environment.Newline

    【讨论】:

      【解决方案4】:

      我们可以使用

      来代替 \n

      Environment.NewLine

      希望对你有帮助

      【讨论】:

        【解决方案5】:

        这就是我为显示创建附加和新行的方式 txtitems.Text = txtitems.Text + Environment.NewLine + dr[0].ToString() +" "+dr[1].ToString();

        【讨论】:

          【解决方案6】:

          任何使用 VB.net 的人,请留意 vbCr

          这是一个例子:

          返回 "我的名字是" & vbCr & "John" & vbCr & "Doe"

          【讨论】:

            猜你喜欢
            • 2016-07-19
            • 2016-02-23
            • 1970-01-01
            • 1970-01-01
            • 2012-08-30
            • 2023-03-23
            • 2022-01-16
            • 2019-12-30
            • 1970-01-01
            相关资源
            最近更新 更多