<TextBox Height="?" Width="?" AcceptReturn="true" />
高度=随机; 宽度=随机; 例如,高度为60,宽度为100。 如何控制文本的输入长度小于TextBox的大小
答案 0 :(得分:6)
修改强>
等等,什么?您想要将字符数限制为TextBox的宽度吗?为什么?<强> EDIT2:强>
您可以使用Graphics.MeasureString来衡量字符串的长度。这是一个可以实现您想要的扩展方法:
public static class TextBoxExtension
{
public static int VisibleCharCount(this textBox textBox)
{
int count = 0;
do {
count++;
var testString = new string('X', count);
var stringWidth = System.Drawing.Graphics.MeasureString(testString, textBox.Font);
} while (stringWidth < textBox.Width);
if (stringWidth == textBox.Width)
return count;
else
return count-1;
}
}
像这样使用:
myTextBox.MaxLength = myTextBox.VisibleCharCount();
<强> EDIT3:强>
如果您的TexBox是MultiLine并且您还想考虑高度,则可以使用带有Size的MeasureString的重载。我相应地修改我的例子。
答案 1 :(得分:0)
使用TextBox
上的MaxLength属性,初始化后可能会非常静态。
或强>
您可以使用PreviewTextInput
事件取消输入文字:
textbox.PreviewTextInput += textbox_PreviewTextInput;
void textbox_PreviewTextInput(object sender, TextCompositionEventArgs e)
{
TextBox box = (TextBox) sender;
e.Handled = box.Text.Length > 5;
}