我的密钥存在问题。当它只是关键时,一切都有效,但关键持有怎么办?代码如下所示:
private void Window_KeyDown(object sender, KeyEventArgs e)
{
if (e.Key == Key.Left || e.Key == Key.Right || e.Key == Key.Up || e.Key == Key.Down)
{
moveBall(3);
}
}
感谢您的回复。
答案 0 :(得分:9)
WPF KeyEventArgs类has an IsRepeat property,如果按下该键,它将为true。
文章中的例子:
// e is an instance of KeyEventArgs.
// btnIsRepeat is a Button.
if (e.IsRepeat)
{
btnIsRepeat.Background = Brushes.AliceBlue;
}
答案 1 :(得分:4)
我可以看到两种方法来做到这一点。
首先是不断检查键盘的Keyboard.IsKeyDown。
while (Keyboard.IsKeyDown(Key.Left) || Keyboard.IsKeyDown(Key.Right) || ...)
{
moveBall(3);
}
第二种方法是在KeyDown事件上启动 moveBall 方法并继续执行,直到您处理相应的KeyUp事件。
private void Window_KeyDown(object sender, KeyEventArgs e)
{
if (e.Key == Key.Left || e.Key == Key.Right ...)
// think about running this on main thread
StartMove();
}
private void Window_KeyUp(object sender, KeyEventArgs e)
{
if (e.Key == Key.Left || e.Key == Key.Right ...)
// think about running this on main thread
StopMove();
}