Vous devez "câbler" les événements aux gestionnaires d'événements.
Pour commencer, pour obtenir le code HideLabel_Click
appelé, vous en avez besoin pour répondre à un clic sur le bouton "HideLabel".
Il existe deux façons de procéder: vous pouvez utiliser AddHandler
ou la clause Handles
.
Pour démontrer ce dernier:
Option Strict On
Public Class Form1
Private Sub HideLabel_Click(sender As Object, e As EventArgs) Handles HideLabel.Click
myLabel.Visible = False
End Sub
Private Sub myLabel_VisibleChanged(sender As Object, e As EventArgs) Handles myLabel.VisibleChanged
MessageBox.Show("Visible change event raised!!!")
End Sub
End Class
Cependant, vous remarquerez que le message apparaît même avant que le formulaire apparaît. C'est à cause de ce qui se passe dans les coulisses pour créer le formulaire.
Pour éviter que cela se produise, vous pouvez ajouter le gestionnaire après que le formulaire a été montré:
Option Strict On
Public Class Form1
Private Sub HideLabel_Click(sender As Object, e As EventArgs) Handles HideLabel.Click
myLabel.Visible = False
End Sub
Private Sub myLabel_VisibleChanged(sender As Object, e As EventArgs)
MessageBox.Show("Visible change event raised!!!")
End Sub
Private Sub Form1_Shown(sender As Object, e As EventArgs) Handles MyBase.Shown
AddHandler myLabel.VisibleChanged, AddressOf myLabel_VisibleChanged
End Sub
End Class
Une autre façon, dans VB2015 et plus tard, est d'utiliser un « lambda expression » au lieu d'une méthode distincte, bien que vous ne pouvez pas dissocier le gestionnaire de l'événement avec RemoveHandler
:
était assez aimable
Option Strict On
Public Class Form1
Private Sub HideLabel_Click(sender As Object, e As EventArgs) Handles HideLabel.Click
myLabel.Visible = False
End Sub
Private Sub Form1_Shown(sender As Object, e As EventArgs) Handles MyBase.Shown
AddHandler myLabel.VisibleChanged, Sub() MessageBox.Show("Visible change event raised!!!")
End Sub
End Class
Craig à [et je cite textuellement] attirer l'attention sur l'importance de Option Strict
lorsque vous ajoutez gestionnaire s manuellement en utilisant AddHandler. Sans cela, la "convention déléguée détendue" peut permettre d'ajouter des gestionnaires qui ne correspondent pas exactement à la signature d'événement que vous ne pourrez pas supprimer plus tard. Cela dit, l'option Strict On n'est pas une sauvegarde complète: remarquez comment mon dernier exemple compile et fonctionne même avec la mauvaise méthode de signature pour le gestionnaire.
[Je soupçonne que l'exemple de code MSDN a été créé en C# dans le cadre d'un exemple plus, de sorte que certaines parties ont été perdues dans la traduction et excerption.]
Avez-vous appelé AddVisibleChangedEventHandler quelque part, dans Form_Load par exemple ? – Benno