J'ai travaillé depuis un moment sur mon projet Windows Forms, et j'ai décidé d'expérimenter avec des raccourcis clavier. Après un peu de lecture, j'ai réalisé que je devais simplement écrire un gestionnaire d'événements et le lier à l'événement KeyDown du formulaire :
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
if (e.Control && e.Alt && e.KeyCode == Keys.O)
{
MessageBox.Show("Ctrl+Alt+O : magie !");
}
}
J'ai fait cela à la bonne vieille manière en ouvrant le panneau Propriétés du designer Visual Studio, puis en double-cliquant sur l'événement KeyDown de mon formulaire pour générer le gestionnaire d'événements Form1_KeyDown
. Mais lors de mes tests d'application, le formulaire ne répond pas du tout au raccourci clavier Ctrl+Alt+O. Cependant, le designer Visual Studio a bien généré le code pour lier le gestionnaire d'événements au formulaire :
private void InitializeComponent()
{
// ...
this.KeyDown += new System.Windows.Forms.KeyEventHandler(this.Form1_KeyDown);
// ...
}
J'ai alors essayé d'ajouter un appel Console.WriteLine()
au gestionnaire pour vérifier s'il était appelé du tout, mais sans succès non plus.
J'ai également essayé de définir un point d'arrêt sur l'appel de liaison d'événement (indiqué juste ci-dessus) et j'ai constaté que le programme atteignait ce point d'arrêt sans problème. Cependant, les points d'arrêt que j'ai définis dans la définition de la méthode ne sont jamais atteints.
Pour m'assurer que je réalisais correctement les premières étapes, j'ai essayé de les répéter avec :
-
Un nouveau formulaire dans la même solution.
Même problème : le formulaire ne répond pas lorsque j'appuie sur mon raccourci clavier Ctrl+Alt+O et le débogueur ne passe même pas dans le gestionnaire d'événements.J'ai essayé à nouveau et ça marche. -
Une toute nouvelle solution WinForms.
Cela fonctionne parfaitement : la boîte de dialogue apparaît (l'appelConsole.WriteLine()
fonctionne également).
Je suis donc assez perdu ici. Qu'est-ce qui empêche tous les formulaires de ce projet de recevoir des événements KeyDown ?