Keydown事件发生两次
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Keydown事件发生两次相关的知识,希望对你有一定的参考价值。
在Windows商店App上,我有这个简单的TextBox
<TextBox Name="TextBoxUser" HorizontalAlignment="Right" Width="147" Margin="20,0,0,0" KeyDown="TextBox_KeyDown" /
这有一个与之关联的KeyDown事件。
private async void TextBox_KeyDown(object sender, KeyRoutedEventArgs e)
{
if (e.Key == Windows.System.VirtualKey.Enter)
{
Debug.WriteLine("LA");
}
}
这个函数的输出是:
THE THE
虽然我只按一下Enter键,但它会打印2次。任何原因或我做错了什么?
答案
这是Windows RT中的已知错误。您可以通过检查Key RepeatCount来处理它
if (e.KeyStatus.RepeatCount == 1)
{
//Execute code
}
另一答案
我终于意识到KeyDown事件中可能存在一个错误。
当我设置时,正如@daniellepelley所说,
e.Handled = true;
事件仍然传播:其他按钮将拦截它,如果它们不应该。
在我的代码中,我刚用KeyUp事件替换了KeyDown事件,一切正常(始终将Handled设置为True值)!
另一答案
void onKeyPressEvent(object sender, KeyEventArgs e)
{
if(e.Handled)
return;
{
//
// the block of codes to be executed on the key press
// should added here.
//
}
e.Handled = true;
}
以上是关于Keydown事件发生两次的主要内容,如果未能解决你的问题,请参考以下文章