文本长度超过允许的最大文本

时间:2013-07-24 08:57:58

标签: c# .net winforms

我正在使用文本框,这是我的问题...

我已经有了一个处理程序,当达到定义的最大文本长度时,程序将不再允许输入。这是代码:

private void txtText_KeyPress(object sender, KeyPressEventArgs e)
{
    if (txtText.Text.Length > MaxLengthAllowed - 1 && e.KeyChar != 8)
    {
        e.Handled = true;
        Console.Beep(2000, 90);
        return;
    }
}

现在我的问题是当我按住一个键(例如字母A)时,它超过了“MaxLengthAllowed”然后发出哔哔声。

这是一个错误还是类似于文本框的限制?或者我错过了什么?

当您没有持有钥匙时,此代码正常工作。因此,这是我的问题。

3 个答案:

答案 0 :(得分:1)

只需设置文本框的MaxLength属性即可。它就像

一样简单
textboxVar.MaxLength = maxLengthAllowed;

希望有所帮助。

您可以随时订阅PropertyChanged事件,只要文本框的Text属性发生更改,您就可以触发该事件。阅读如何raise an event on Property Change

答案 1 :(得分:0)

您可以改用KeyUp事件。当你释放钥匙时,它只会发射一次。只要你按住键,KeyPress就会被多次激活。

答案 2 :(得分:0)

TextBox.Text触发时TextBox.KeyPress未更新。例如,如果Text之前的KeyPressA,则当用户输入B时,Text仍为A(不是{{1}在AB事件处理程序中。})因此,您必须将KeyPress定义为比期望值小1。代码应如下所示:

MaxLengthAllowed

我认为您应该使用private void txtText_KeyPress(object sender, KeyPressEventArgs e) { if ((txtText.Text.Length > MaxLengthAllowed - 1) && e.KeyChar != 8) { e.Handled = true; Console.Beep(2000, 90); } } 属性,它也支持TextBox.MaxLengthBeep甚至比Beep sound生成的Beep更好。< / p>