C#WPF密钥持有

时间:2013-12-28 19:40:24

标签: c# wpf key

我的密钥存在问题。当它只是关键时,一切都有效,但关键持有怎么办?代码如下所示:

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);
    }
}

感谢您的回复。

2 个答案:

答案 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();
}