Fiche savoirs : programmation événementielle en C# partie 2

Limiter les accès aux objets graphiques

Il est possible de rendre un objet graphique inaccessible. Cela peut permettre d’éviter certains tests et rend l’interface plus parlante pour l’utilisateur : il voit qu’il ne peut pas accéder à l’objet.

btnSupprimer.Enabled = false;

Gérer le focus

Il est possible de définir l'objet qui doit avoir le focus.

txtTitre.Focus();

Optimiser le code avec des modules classiques

Les optimisations sont pour éviter des répétitions de code en plaçant un code utilisable plusieurs fois dans une fonction. Ici, la reposition du focus sur la zone de texte se fait plusieurs fois. Créer une procédure événementielle juste pour une ligne de code ne parait pas logique. Pourtant, on peut imaginer d’autres lignes de code qui pourraient s’y ajouter. D’ailleurs ici, il est logique que la zone de texte soit aussi systématiquement vidée avant de repositionner le focus dessus.
Il est possible de créer automatiquement une procédure non événementielle à partir de ligne(s) de code sélectionnée(s). txtTitre.Focus(); Sélectionner le code à isoler :
À n’importe quel endroit, sélectionnez la ligne de code correspondant à la position du focus sur la zone de texte. Demander de refactorisation : Clic droit sur la sélection et, dans le menu qui s’affiche, sélectionnez “Actions rapides et refactorisations…” Demander de création de la procédure : Dans le nouveau menu, sélectionnez “Extraire une méthode”. L’aperçu de droite montre ce qui va être fait : Création d’une méthode “NewMethod” contenant le code sélectionné. Remplacement de la sélection par l’appel de la méthode. Renommer la méthode : Il vous est directement proposé de renommer la méthode. Directement sur le nom actuel qui est sur fond vert, tapez un nouveau nom (par exemple “GestionZoneDeSaisie”) : remarquez que le nom de l’appel se change en même temps. Validez ou cliquez sur “Appliquer”. La méthode est créée ainsi que le premier appel.
private void frmFilmsLoad(object sender, EventArgs e) { lblTitre.Text = “”;
GestionZoneDeSaisie(); } Appeler la méthode : Partout où se trouve la ligne de code qui permet de remettre le focus sur la zone de texte, remplacez la ligne par l’appel de la méthode. private void GestionZoneDeSaisie() { txtTitre.Text = “”;
txtTitre.Focus(); } Par exemple, au chargement du formulaire. Optimiser la méthode : Logiquement, lorsque le focus est replacé sur la zone de saisie, celle-ci doit être préalablement vidée. Ajouter la ligne correspondante. private void btnAjouterClick(object sender, EventArgs e) { string titre = txtTitre.Text.ToUpper(); if (!titre.Equals(“”)) { lstTitres.Items.Add(titre); lblTitre.Text = titre; txtTitre.Text = “”;

}
GestionZoneDeSaisie();

} Nettoyer le code : Dans le reste du code, enlevez les lignes qui vident la zone de texte (attention, n’enlevez pas les lignes qui vides le label). A priori, ce n’est que sur le clic de btnAjouter.