wpf tabs key-bindings ctrl

Cómo capturar Ctrl+Tab y Ctrl+Shift+Tab en WPF?



tabs key-bindings (5)

¿Cuál sería un código de muestra que atrapará Ctrl + Tab y Ctrl + Shift + Tab para una aplicación WPF?

KeyDown eventos KeyDown y también intentamos agregar enlaces de comando con gestos de entrada, pero nunca pudimos atrapar estos dos accesos directos.


¿Qué controlador KeyDown tenías? El siguiente código funciona para mí. El que me da problemas es: Alt + Tab , pero no me lo preguntaste: 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"); } }


Hola, puedes usar esto en el evento de keydown

private void OnButtonKeyDown(object sender, KeyEventArgs e) { if(Keyboard.IsKeyDown(Key.LeftCtrl) && Keyboard.IsKeyDown(Key.Tab) && Keyboard.IsKeyDown(Key.LeftShift)) { // // TODO: somthing here // } }


La respuesta de Gustavo fue exactamente lo que estaba buscando. Queremos validar las teclas de entrada, pero aún así permitir el pegado:

protected override void OnPreviewKeyDown(KeyEventArgs e) { if ((e.Key == Key.V || e.Key == Key.X || e.Key == Key.C) && Keyboard.IsKeyDown(Key.LeftCtrl)) return; }


Tienes que usar el evento KeyUp , no KeyDown ...


Versión de trabajo de la respuesta de Szymon Rozga (lo siento, no puedo comentar). No miramos a Alt, pero la contabilidad se puede agregar simplemente al principio si

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