Étape 5 : ajouter un gestionnaire d'événements MouseEnter pour chaque mur
Le jeu de labyrinthe serait plus divertissant et difficile s'il renvoyait le pointeur de la souris au point de départ chaque fois que le pointeur touche un mur.Avant de poursuivre votre lecture, réfléchissez au moyen d'y parvenir.
Pour obtenir une version vidéo de cette rubrique, consultez Tutorial 2: Create a Maze in Visual Basic - Video 3 ou Tutorial 2: Create a Maze in C# - Video 3.
Pour ajouter un gestionnaire d'événements MouseEnter pour chaque mur
Ouvrez le Concepteur Windows Forms et cliquez sur l'un des murs que vous venez d'ajouter.
Ouvrez la fenêtre Propriétés et cliquez sur l'icône Événement pour afficher les événements liés à ce mur.Faites défiler jusqu'à l'événement MouseEnter.Au lieu de double-cliquer dessus, tapez le texte wall_MouseEnter, puis appuyez sur ENTRÉE.L'icône Événement et la fenêtre Propriétés apparaissent comme suit.
Icône Événement
Fenêtre Propriétés affichant l'événement MouseEnter
[!REMARQUE]
Lorsque vous tapez le nom de l'évènement directement dans la table d'événement de la fenêtre Propriétés, vous demandez à l'IDE de créer un gestionnaire d'événements avec ce nom et de le relier à l'événement du contrôle.Il est souvent préférable de laisser l'IDE choisir lui-même les noms des événements, car il utilise des noms logiques qui permettent à d'autres personnes de lire et de comprendre facilement votre code.Lorsque l'IDE choisit un nom pour un gestionnaire d'événements, il combine le nom du contrôle et de l'événement.Dans le cas présent, vous n'avez pas changé les noms par défaut de vos murs, autrement dit label4, label18, label25, et ainsi de suite.Donc si vous aviez cliqué sur un mur appelé label12, l'IDE aurait nommé le gestionnaire d'événements label12_MouseEnter.En tapant le nom wall_MouseEnter, vous choisissez un nom plus explicite.C'est particulièrement important lorsque vous utilisez un gestionnaire d'événements pour plusieurs contrôles, comme dans les prochaines étapes de ce didacticiel.
Après avoir appuyé sur ENTRÉE, l'IDE ajoute un nouveau gestionnaire d'événements à votre place et le relie à l'événement MouseEnter de ce mur.Le code que vous venez d'ajouter doit s'afficher dans votre éditeur de code comme suit.En Visual Basic, un autre nom que Label8 (indiqué dans le code ci-dessous) peut éventuellement être utilisé.
Private Sub wall_MouseEnter() Handles Label8.MouseEnter End Sub
private void wall_MouseEnter(object sender, EventArgs e) { }
Ensuite, ajoutez un appel à votre méthode MoveToStart() et expliquez sa fonction dans un commentaire.Commencez par ajouter l'instruction MoveToStart() à votre méthode.Une fenêtre IntelliSense s'ouvre, et les éléments suivants s'affichent.
Fenêtre IntelliSense
Une fois que vous avez ajouté votre méthode MoveToStart(), l'IDE l'a ajoutée à la fenêtre IntelliSense.Le commentaire XML que vous avez ajouté s'affiche dans l'info-bulle.C'est particulièrement utile lorsque vous écrivez des programmes comportant plusieurs méthodes.
Appuyez sur TAB pour demander à IntelliSense de compléter le nom de la méthode.Si vous écrivez du code Visual C#, n'oubliez pas d'ajouter le point-virgule (;) à la fin de l'instruction.Ensuite, ajoutez un commentaire au-dessus de l'instruction.Votre code doit ressembler à ce qui suit.En Visual Basic, un autre nom que Label8 (indiqué dans le code ci-dessous) peut éventuellement être utilisé.
Private Sub wall_MouseEnter() Handles Label8.MouseEnter ' When the mouse pointer hits a wall or enters the panel, ' call the MoveToStart() method. MoveToStart() End Sub
private void wall_MouseEnter(object sender, EventArgs e) { // When the mouse pointer hits a wall or enters the panel, // call the MoveToStart() method. MoveToStart(); }
Enregistrez et exécutez votre programme.Placez le pointeur de votre souris sur le mur auquel vous avez relié le gestionnaire d'événements.(Si vous avez oublié lequel, déplacez le pointeur de votre souris sur chaque mur jusqu'à ce que vous retrouviez celui que vous aviez choisi.) Dès que vous le touchez, il doit renvoyer le pointeur de votre souris au point de départ.
Vous voulez ensuite effectuer la même opération pour les autres murs.Vous pourriez écrire le même gestionnaire d'événements MouseEnter pour chacun des murs.Mais ce processus prendrait trop de temps, multiplierait les lignes de code identiques dans votre programme et rendrait compliquée toute tâche de modification.L'IDE offre un moyen plus simple de relier un même gestionnaire d'événements à tous les murs.
Ouvrez le Concepteur Windows Forms, et dans le menu Edition, cliquez sur Sélectionner tout.
Maintenez la touche CTRL enfoncée, puis cliquez sur le contrôle Label Finish pour effacer la sélection.L'élément Panel et tous les murs doivent ainsi être sélectionnés.
Maintenant, ouvrez la table d'événement dans la fenêtre Propriétés.Faites défiler jusqu'à l'événement MouseEnter et cliquez sur la zone d'édition en regard.Vous devez apercevoir une flèche de déroulement.Si vous cliquez sur la flèche, une liste de tous les gestionnaires d'événements disponibles pour cet événement s'affiche dans votre programme.Le gestionnaire d'événements finishLabel_MouseEnter que vous avez ajouté précédemment doit apparaître, de même que le gestionnaire wall_MouseEnter que vous venez d'écrire, comme indiqué dans l'image suivante.
Événement MouseEnter avec les gestionnaires d'événements
Sélectionnez wall_MouseEnter.(Si vous vous trompez de gestionnaire d'événements ou que vous en ajoutez un nouveau par erreur, vous pouvez resélectionner tous les murs et le Panel, puis choisir la méthode correcte.)
Votre labyrinthe doit maintenant être plus divertissant.Essayez de l'enregistrer et de l'exécuter.Si votre pointeur touche un mur ou que vous déplacez votre pointeur en dehors du labyrinthe avant de le replacer à l'intérieur de celui-ci, le programme doit repositionner automatiquement le pointeur sur le point de départ du labyrinthe.
Pour continuer ou examiner
Pour passer à l'étape suivante du didacticiel, consultez Étape 6 : ajouter un SoundPlayer.
Pour revenir à l'étape précédente du didacticiel, consultez Étape 4 : ajouter une méthode pour redémarrer le jeu.