Sie müssen die Ereignisse zu den Ereignishandlern "verdrahten".
Um zu beginnen, um den Code in HideLabel_Click
aufgerufen werden zu erhalten, müssen Sie auf einen Klick auf die Schaltfläche namens "HideLabel" reagieren.
Es gibt zwei Möglichkeiten, dies zu tun: Sie können AddHandler
oder die Handles
Klausel verwenden.
letztere demonstrieren:
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
jedoch, werden Sie feststellen, dass die Nachricht selbst angezeigt wird, bevor das Formular angezeigt wird. Das liegt daran, was hinter den Kulissen passiert, um die Form zu erstellen.
Um dieses Ereignis zu vermeiden, können Sie die Handler hinzufügen können, nachdem das Formular angezeigt wurde:
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
andere Art und Weise, in VB2015 und später ist ein „lambda expression“ anstelle einem separaten Verfahren zu verwenden, obwohl dann können Sie nicht den Handler von der Veranstaltung mit RemoveHandler
distanziere:
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 war so freundlich, [und ich zitiere wörtlich] Aufmerksamkeit auf die Bedeutung von Option Strict
aufrufen, wenn Sie Handler hinzufügen s manuell mit AddHandler. Ohne sie erlaubt die "locked delegate convention" möglicherweise das Hinzufügen von Handlern, die nicht genau mit der Ereignissignatur übereinstimmen, die Sie später nicht entfernen können.
Mit dem gesagt, Option Strict On ist keine vollständige Absicherung: Beachten Sie, wie mein letztes Beispiel kompiliert und funktioniert auch mit der falschen Methodensignatur für den Handler.
[Ich vermute, dass die MSDN-Codebeispiel zunächst in C# als Teil eines umfangreicheren Beispiels erstellt wurde, so haben einige Teile in der Übersetzung und excerption verloren gegangen ist.]
Haben Sie AddVisibleChangedEventHandler irgendwo genannt, in Form_Load zum Beispiel ? – Benno