我正在使用文本框,这是我的问题...
我已经有了一个处理程序,当达到定义的最大文本长度时,程序将不再允许输入。这是代码:
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”然后发出哔哔声。
这是一个错误还是类似于文本框的限制?或者我错过了什么?
当您没有持有钥匙时,此代码正常工作。因此,这是我的问题。
答案 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
之前的KeyPress
为A
,则当用户输入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.MaxLength
,Beep
甚至比Beep sound
生成的Beep
更好。< / p>