【问题标题】:.NET - Long Line in RichTextBox Wrapped after 3,510 Characters.NET - RichTextBox 中的长行在 3,510 个字符后换行
【发布时间】:2010-12-30 20:29:46
【问题描述】:

我在 WInForms 程序中有一个 RichTextBox,它可以包装任何长度超过 3,510 个字符的行。我将 WordWrap 设置为 false,因此该长度下的所有行都正常扩展而不会换行。我用来解决这个问题的方法是将 RightMargin 设置为一个较高的数字,例如 100,000,这仍然有效,但现在我使用的是 Windows 7 而不是 XP,我得到一个滚动条,就像文本框有这么大长度的线条,当它没有的时候。

要复制,只需创建一个带有 RichTextBox 和 Button 的 winforms 程序。在按钮的单击事件中,输入以下内容:

        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < 3511; i++)
            sb.Append('A');
        richTextBox1.Text = sb.ToString();

看到环绕后,将文本框的 RightMargin 更改为 100000,并注意在运行程序之前出现的滚动条(仅在 7 上,可能是 Vista 上)。该行不再换行,但我希望滚动条只作用于框中的文本,而不是一些预先确定的长度。

【问题讨论】:

  • 有没有更好的方法给这只猫剥皮然后强迫用户滚动这么多才能查看数据?
  • 我复制。看起来是故意的,非常修复成本很高。
  • @Hans 是的,我做得很好,它基于字体大小显示...您可以根据字体属性获得更多/更少 3510,而不是硬值。
  • @Aaron 我的程序是一个文本文件查看器,因此它需要能够显示文件中的任何内容,完全按照它的内容显示。我们得到一些罕见的分隔或固定宽度文件,它们的行长于此,我需要确保它们正确显示。
  • 了解您要提供抄送;然而,仍有一些提示和方法可以提供抄送,但通知用户该行在 X 点继续并将其移动到另一行,等等……使 UI 对用户友好;仅仅因为文本行是 N 个字符长并不意味着 UI 必须将它们显示在一个连续的行中,这会迫使用户无限期地滚动。

标签: c# .net winforms


【解决方案1】:

您可以将richTextBox 的右边距设置为字符串的宽度吗?像这样

richTextBox1.RightMargin = 
TextRenderer.MeasureText(sb.ToString(), this.richTextBox1.Font).Width;

【讨论】:

  • 谢谢!我希望更多的只是一个设置,但我可以遍历文本框中的每一行,找到最长的,然后设置为那个。
  • 这是它接受的最大值:143165576
  • 放置 0 将给出相同的结果。它仍然会换行很长的行。
猜你喜欢
  • 1970-01-01
  • 2019-11-16
  • 1970-01-01
  • 1970-01-01
  • 2016-08-17
  • 2011-01-22
  • 1970-01-01
  • 1970-01-01
  • 2012-12-27
相关资源
最近更新 更多