68 votes

Comment capturer Ctrl + Tab, Ctrl + Maj + Tab dans WPF?

Quelqu'un at-il un exemple de code qui interceptera les combinaisons de touches Ctrl + Tab et Ctrl + Maj + Tab pour une application WPF?

Nous avons créé les événements KeyDown et avons également essayé d’ajouter des liaisons de commande avec des gestes de saisie, mais nous ne sommes jamais en mesure d’intercepter ces 2 raccourcis.

96voto

Szymon Rozga Points 11277

Quel gestionnaire KeyDown avez-vous eu? Le code ci-dessous fonctionne pour moi. Celui qui me pose problème est Alt Tab mais vous ne l'avez pas demandé. :RÉ

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

31voto

mikeB Points 151

Gustavo m'a donné exactement ce que je cherchais. Nous voulons valider les clés d’entrée tout en permettant le collage.

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

Merci!

8voto

Gustavo Cavalcanti Points 3580

Vous devez utiliser KeyUp événement, pas KeyDown ...

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X