有什么示例代码可以捕获WPF应用程序中的Ctrl+Tab和Ctrl+Shift+Tab?
我们已经创建了KeyDown
事件,并尝试添加具有输入手势的命令绑定,但我们始终无法捕获这两个快捷键。
有什么示例代码可以捕获WPF应用程序中的Ctrl+Tab和Ctrl+Shift+Tab?
我们已经创建了KeyDown
事件,并尝试添加具有输入手势的命令绑定,但我们始终无法捕获这两个快捷键。
你使用了哪个KeyDown事件处理程序?以下代码对我有效。让我烦恼的是:Alt + Tab,但你没有问那个:D
public Window1()
{
InitializeComponent();
AddHandler(Keyboard.KeyDownEvent, (KeyEventHandler)HandleKeyDownEvent);
}
private void HandleKeyDownEvent(object sender, KeyEventArgs e)
{
if (e.Key == Key.Tab && (Keyboard.Modifiers & (ModifierKeys.Control | ModifierKeys.Shift)) == (ModifierKeys.Control | ModifierKeys.Shift))
{
MessageBox.Show("CTRL + SHIFT + TAB trapped");
}
if (e.Key == Key.Tab && (Keyboard.Modifiers & ModifierKeys.Control) == ModifierKeys.Control)
{
MessageBox.Show("CTRL + TAB trapped");
}
}
Gustavo的答案正是我所需要的。我们想要验证输入键,但仍允许粘贴:
protected override void OnPreviewKeyDown(KeyEventArgs e)
{
if ((e.Key == Key.V || e.Key == Key.X || e.Key == Key.C) && Keyboard.IsKeyDown(Key.LeftCtrl))
return;
}
您需要使用KeyUp
事件,而不是KeyDown
事件...
public View()
{
InitializeComponent();
AddHandler(Keyboard.PreviewKeyDownEvent, (KeyEventHandler)controlKeyDownEvent);
}
private void controlKeyDownEvent(object sender, KeyEventArgs e)
{
if (e.Key == Key.Tab && Keyboard.Modifiers.HasFlag(ModifierKeys.Control))
{
if (Keyboard.Modifiers.HasFlag(ModifierKeys.Shift))
MessageBox.Show("CTRL + SHIFT + TAB trapped");
else
MessageBox.Show("CTRL + TAB trapped");
}
}
嗨,您可以在按键按下事件上使用这个。
private void OnButtonKeyDown(object sender, KeyEventArgs e)
{
if(Keyboard.IsKeyDown(Key.LeftCtrl) && Keyboard.IsKeyDown(Key.Tab) && Keyboard.IsKeyDown(Key.LeftShift))
{
//
// TODO: somthing here
//
}
}
Keyboard.Modifiers.HasFlag(ModifierKeys.Control)
。 - Pakman(Keyboard.Modifiers & (ModifierKeys.Control | ModifierKeys.Shift)) == (ModifierKeys.Control | ModifierKeys.Shift)
also captures Ctrl+Shift+Alt, so it seems better to me to use(Keyboard.Modifiers == (ModifierKeys.Control | ModifierKeys.Shift))
- rayzinnz