wpf,如何限制TextBox的MaxLength?

时间:2010-12-02 12:06:43

标签: c# wpf

<TextBox Height="?" Width="?" AcceptReturn="true" />

高度=随机; 宽度=随机; 例如,高度为60,宽度为100。 如何控制文本的输入长度小于TextBox的大小

2 个答案:

答案 0 :(得分:6)

使用MaxLength

修改

等等,什么?您想要将字符数限制为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;
}