我需要捕获用户的输入并将其发送到我的WPF应用程序中。
我在网上找到了一些相关资料,发现我需要像这样做:
捕获按键事件:
void keyDown(object sender, KeyEventArgs e)
{
if (Keyboard.Modifiers.HasFlag(Modifiers.Shift))
KeyPressed.SetShift(true);
if (Key.Shift != e.Key && Key.LeftAlt != e.Key && ....)
KeyPressed.SetKey(e.Key);
}
KeyPressed是一个类,其中包含静态布尔变量,用于捕获是否按下了⇧Shift、Alt或Ctrl和另一个键(在if
子句中使用Alt和Ctrl代替⇧Shift)。第二个if
用于捕获与快捷键不同的键。例如,对于快捷键Alt+C,我们有:
KeyPressed.Shift = false;
KeyPressed.Alt = true;
KeyPressed.Ctrl = false;
KeyPressed.key = Key;
其中最后一个元素的类型为System.Window.Input.Key
。
当释放按键时进行捕获:
void keyUp(object sender, KeyEventArgs e)
{
if (KeyPressed.getShift())
this.textField.Text += "+Shift";
if (KeyPressed.getKeyCode())
this.textField.Text += "+" + KeyPressed.k.toString();
KeyPressed.SetShift(false);
}
在这里,我将输入附加到textField中,然后将所有键设置为false,以便正确捕获下一个快捷方式。此代码适用于所有快捷方式,如Ctrl+A、Ctrl+Alt+C、⇧Shift+L、Alt,但是当我按下Alt+V这样的快捷方式时,它只捕获Alt,而不是其他键。
我该如何处理这个问题?有没有更好的方法来处理快捷方式?