C# 将富文本框文本长度限制为明显合适的长度?

C# 将富文本框文本长度限制为明显合适的长度?,c#,.net,winforms,textbox,C#,.net,Winforms,Textbox,我有一个C#/WinForms富文本框,我需要能够将输入的文本限制在可视区域内的可见范围内。我知道我可以通过字符的数量来限制它,但是当我们考虑诸如单词包装、非单字体字体的不同字符宽度等,时,这并不能达到预期的效果。 我可以在文本更改时触发事件回调,但我需要一种方法来知道文本超出了可视区域。有什么建议吗?在回拨中,您可以使用它来确定给定字体的字符串长度。然后将其与文本框宽度进行比较 您可以使用Graphics.MeasureString获取字符串的实际宽度,并在达到文本框宽度时停止 Graphic

我有一个C#/WinForms富文本框,我需要能够将输入的文本限制在可视区域内的可见范围内。我知道我可以通过字符的数量来限制它,但是当我们考虑诸如单词包装、非单字体字体的不同字符宽度等,

时,这并不能达到预期的效果。
我可以在文本更改时触发事件回调,但我需要一种方法来知道文本超出了可视区域。有什么建议吗?

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

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

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


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

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

};

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

我是个白痴。。它是一个富文本框,不是可选的。我正在考虑这个问题,看看我是否能以某种方式应用它。。。以布局面积为因素的方法似乎是可行的。。