如何检测当前是否正在按任何键盘键?我对关键是什么不感兴趣,我只是想知道是否仍然按下了任何键.
if (Keyboard.IsKeyDown(Key.ANYKEY??)
{
}
Run Code Online (Sandbox Code Playgroud)
Ser*_*rvy 10
public static IEnumerable<Key> KeysDown()
{
foreach (Key key in Enum.GetValues(typeof(Key)))
{
if (Keyboard.IsKeyDown(key))
yield return key;
}
}
Run Code Online (Sandbox Code Playgroud)
你可以这样做:
if(KeysDown().Any()) //...
Run Code Online (Sandbox Code Playgroud)
如果您只想检测在我们的应用程序中按下的键(当您的 WPF 窗口被激活时),请添加KeyDown如下所示:
public MainWindow()
{
InitializeComponent();
this.KeyDown += new KeyEventHandler(MainWindow_KeyDown);
}
void MainWindow_KeyDown(object sender, KeyEventArgs e)
{
MessageBox.Show("You pressed a keyboard key.");
}
Run Code Online (Sandbox Code Playgroud)
如果您想检测何时按下某个键,即使您的 WPF 窗口未处于活动状态,这也有点困难,但可能是可行的。我推荐RegisterHotKey(定义系统范围的热键)和UnregisterHotKeyWindows API。尝试在来自pinvoke.net或这些教程的C# 中使用这些:
这是Microsoft 论坛中的示例。
您将使用虚拟键代码。我希望我说的很清楚,你会明白我的回答。