我使用这个代码来阻止美元按钮shift + 4 = $。 在此表http://expandinghead.net/keycode.html的$是码36键入美元
现在的keydown代码:
if (e.KeyValue == 36)
{
e.Handled = true;
}
代码无法正常工作,为什么?
我使用这个代码来阻止美元按钮shift + 4 = $。 在此表http://expandinghead.net/keycode.html的$是码36键入美元
现在的keydown代码:
if (e.KeyValue == 36)
{
e.Handled = true;
}
代码无法正常工作,为什么?
这是因为您首先按shift
,然后是4,所以当使用KeyDown
事件时,您将分别得到shift
(键值16)的代码。
要达到您想要的效果,请使用KeyPress
事件,而不是KeyDown
。 KeyPress
将注册您输入的字符($
),而不是单个按键。
if (e.KeyChar == '$')
{
e.Handled = true;
}
为什么不上KeyPress事件
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == '$')
{
e.Handled = true;
}
}
是的,这就是我用于特定字符(我会使用KeyDown的特殊键,如PgDn或其他没有相应的字符) –
检查:http://stackoverflow.com/questions/8459067/winforms-capturing-the-combination-of-key-presses-using-processcmdkey -vs-keydo – MUG4N
2000行为一键?不用了,谢谢! – Federal09
这可能不是您的应用程序中的问题,但请注意,如果用户使用不同的键盘布局,或者如果他从其他地方复制粘贴'$',他可能会绕过您的验证。 – Vache