1

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

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

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

4

2 回答 2

1

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

像这样的东西:

public void ValueChanged()
{
    var stringSize = e.Graphics.MeasureString(textBox.Text, textBox.Font);
    if(stringSize.Height > MAXSTRINGHEIGHT)
    {
       textBox.Text = TrimTextAndAddEllipsis(textBox.Text);
    }
}
于 2012-10-23T14:31:32.830 回答
0

我想您需要根据以下等式设置宽度

[border slack] + ([character length] * ([number of characters] + [5 - number of characters Mod 5])). 
于 2012-10-23T14:26:11.310 回答