使用 TextBox 控件,我想强制执行最大长度。但是,最大长度基于以像素为单位的字符串大小,而不是字符数。
如果这样做会导致字符被文本渲染器修剪,我想限制输入更多字符,通常会被省略号 (...) 截断。
问题是我不一定使用固定字体。我正在使用多行文本框。
如果您的字体不是固定大小,您必须在输入每个字符后重新计算宽度/高度。
像这样的东西:
public void ValueChanged()
{
var stringSize = e.Graphics.MeasureString(textBox.Text, textBox.Font);
if(stringSize.Height > MAXSTRINGHEIGHT)
{
textBox.Text = TrimTextAndAddEllipsis(textBox.Text);
}
}
我想您需要根据以下等式设置宽度
[border slack] + ([character length] * ([number of characters] + [5 - number of characters Mod 5])).