[VB.Net] Gérer évènements et propriétés de plusieurs contrôls
Cette démonstration a pour objectif de :
- Regrouper les évènements Click et TextBox_Changed de six TextBox mais en une seule Sub
- Incorporer six label dans une collection ce qui permet d'avoir des index.
Préliminaire
Ouvrir un nouveau projet Windows form.
Coller six textbox, le nom n'a pas d'importance mais dans la propriété Tag mettre sont N° soit de 1 à 6
Coller six label à droite des textbox, le nom n'a pas d'importance mais dans la propriété Tag mettre sont N° soit de 1 à 6
Coller un label (dans le bas) avec le nom Label14
Les six label à gauche des TextBox sont facultatif et ne servent que de point de repère.
Le code du FormLoad
La démo est basée sur six textbox et six label mais le nombre est illimité et ne nécessiterait pas une seule ligne de code supplémentaire.
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim Ctr As Control For Each Ctr In Me.Controls If TypeOf Ctr Is TextBox Then 'Initialise les événements des TextBox AddHandler Ctr.TextChanged, AddressOf AllTextBox_TextChanged AddHandler Ctr.Click, AddressOf AllTextBox_Click ElseIf TypeOf Ctr Is Label Then If Ctr.Tag <> "" Then 'Initialise les propriétés des labels LbGroupe.Add(Ctr, Ctr.Tag) End If End If Next End Sub
Le code des évènement Click et change des TextBox
Private Sub AllTextBox_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) LbGroupe(sender.tag).text = sender.text End Sub Private Sub AllTextBox_Click(ByVal sender As Object, ByVal e As System.EventArgs) Label14.Text = "Vous avez sélectionner le TexBox N° " & sender.tag End Sub
Beh oui... pas une ligne de plus.
Téléchargement
Si vous ne souhaitez pas créer la démonstration, vous pouvez télécharger la solution.
Attention : C'est un fichier zip à décompresser.
La solution ici