具有最大长度的TextBox控件可避免字符串修剪?

时间:2012-10-23 14:22:24

标签: c# winforms textbox

使用TextBox控件,我想强制执行最大长度。但是,最大长度基于字符串大小(以像素为单位),而不是字符数。

我想限制输入更多字符,如果这样做会导致字符被文本渲染器修剪,通常会被省略号(...)截断。

问题是我不一定使用固定的字体。我正在使用多行文本框。

2 个答案:

答案 0 :(得分:1)

如果您的字体不是固定大小,则必须在输入每个字符后重新计算宽度/高度。

这样的事情:

public void ValueChanged()
{
    var stringSize = e.Graphics.MeasureString(textBox.Text, textBox.Font);
    if(stringSize.Height > MAXSTRINGHEIGHT)
    {
       textBox.Text = TrimTextAndAddEllipsis(textBox.Text);
    }
}

答案 1 :(得分:0)

我猜您需要根据下面的公式

设置宽度
[border slack] + ([character length] * ([number of characters] + [5 - number of characters Mod 5])).