使用TextBox控件,我想强制执行最大长度。但是,最大长度基于字符串大小(以像素为单位),而不是字符数。
我想限制输入更多字符,如果这样做会导致字符被文本渲染器修剪,通常会被省略号(...)截断。
问题是我不一定使用固定的字体。我正在使用多行文本框。
答案 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])).