我如何知道箭头键是否被按下而未被释放? OnKeyDown
事件会不断发送......
编辑:即使用户按住按钮几分钟,我们也只想收到一条通知。
感谢。
答案 0 :(得分:1)
释放密钥时会触发OnKeyUp
事件。 OnKeyDown
持续射击,因为当按下键时键会重复。
答案 1 :(得分:1)
您可以创建可为空的DateTime,并在第一个按键事件上设置当前时间,并在按键事件上将其设置为null。如果时间跨度超过选定值(例如一秒),则用户按下该键。
答案 2 :(得分:1)
我认为这是一个Winforms问题,在使用Keyboard类的WPF中不是问题。跟踪KeyDown和KeyUp事件是不可靠的,当您的应用程序在按键关闭时获得或失去焦点时,您可能会错过通知。你需要一些pinvoke帮助:
public static class NativeMethods {
public static bool IsKeyDown(Keys key) {
return GetKeyState(key) < 0;
}
[System.Runtime.InteropServices.DllImport("user32.dll")]
private static extern short GetKeyState(Keys key);
}