====== 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; ===== Rendre invisible un objet objet graphique ===== 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.Visible = 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 fonctions ===== Les optimisations sont pour éviter des répétitions de code en plaçant un code utilisable plusieurs fois dans une fonction. Exemple pour gérer la reposition du focus qui doit se faire plusieurs fois sur la même zone de texte. Il est possible de créer automatiquement une fonction non événementielle à partir de ligne(s) de code sélectionnée(s). === Sélectionner le code à isoler : === À n’importe quel endroit, sélectionnez la ligne de code qui gère la position du focus sur la zone de texte. txtTitre.Focus(); === Demander de refactorisation : === Clic droit sur la sélection et, dans le menu qui s’affiche, sélectionnez **Actions rapides et refactorisations…** {{:bloc1:c_01.jpg|}} === Demander de création de la procédure : === Dans le nouveau menu, sélectionnez **Extraire une méthode** : * il va y avoir la création d’une méthode **NewMethod** contenant le code sélectionné. * Remplacement de la sélection par l’appel de la méthode. {{:bloc1:c_02.jpg|}} === 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. {{:bloc1:c_03.jpg|}} {{:bloc1:c_04.jpg|}} === 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 frmFilms_Load(object sender, EventArgs e) { lblTitre.Text = ""; GestionZoneDeSaisie(); } 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 GestionZoneDeSaisie() { txtTitre.Text = ""; txtTitre.Focus(); }