【问题标题】:Limit rich text box text length to what visibly fits?将富文本框文本长度限制在明显合适的范围内?
【发布时间】:2011-10-24 14:33:06
【问题描述】:

我有一个 C#/WinForms 富文本框,我需要能够将输入的文本限制为明显适合可视区域的内容。我知道我可以通过字符数来限制它,但是当我们考虑自动换行、非等宽字体的不同字符宽度等问题时,这并不能达到预期的效果。

我可以在文本更改时触发事件回调,但我需要一种方法来知道文本超出了可视区域。有什么建议吗?

【问题讨论】:

    标签: c# .net winforms textbox


    【解决方案1】:

    在您的回调中,您可以使用MeasureString 来确定给定字体的字符串的长度。然后将其与文本框宽度进行比较。

    【讨论】:

    • 我是个白痴。它是一个富文本框,不是可选的。我正在研究这个,看看我是否可以以某种方式应用它......将 LayoutArea 作为一个因素的方法似乎是一种可能性......
    【解决方案2】:

    您可以获得适合您的richtextbox可见区域的最后一个字符的偏移量,如下所示:

    richTextBox1.TextChanged += (sndr, evnt) =>
    {
        richTextBox1.Select(0, 0);
        int pos = richTextBox1.GetCharIndexFromPosition(new Point(richTextBox1.Width, richTextBox1.Height));
    
    };
    

    【讨论】:

      【解决方案3】:

      您可以使用Graphics.MeasureString 获取字符串的实际宽度,并在达到您的文本框宽度时停止

      Graphics graphics = this.CreateGraphics();
      SizeF textSize = graphics.MeasureString(myText.Text, this.Font);
      

      http://msdn.microsoft.com/en-us/library/6xe5hazb.aspx

      http://www.codeproject.com/KB/GDI-plus/measurestring.aspx

      【讨论】:

        【解决方案4】:

        我遇到了这个问题,因为我目前正在尝试做相反的事情(调整富文本框的大小以适应其中的文本集),但我遇到了您可能能够使用的函数 GetPreferredSize。您希望在每次合法编辑后将当前 RTF 文本保存在框中,然后在下一次编辑调用 GetPreferredSize 时查看框必须有多大才能容纳新文本。如果太大,则恢复为保存的文本...

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-09-13
          • 1970-01-01
          相关资源
          最近更新 更多