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

时间:2011-10-24 14:33:06

标签: c# .net winforms textbox

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

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

4 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:1)

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

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

};

答案 2 :(得分:0)

您可以使用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

答案 3 :(得分:0)

我遇到了这个问题,因为我目前正在尝试相反的方法(调整富文本框的大小以适应文本集),但我遇到了函数GetPreferredSize,你可能会使用。您需要在每次合法编辑后将当前RTF文本保存在框中,然后在下一次编辑调用GetPreferredSize中保存,以查看容纳新文本的框大小。如果太大,请恢复为已保存的文字...