Rubrik: Controls | VB-Versionen: VB2005, VB2008 | 30.12.09 |
CheckBox: Statusänderung durch Anwender oder per Code? Wurde der Status einer CheckBox durch den Anwender verändert (Mausklick) oder per Code? | ||
Autor: Dieter Otter | Bewertung: | Views: 11.001 |
www.tools4vb.de | System: Win2k, WinXP, Win7, Win8, Win10, Win11 | Beispielprojekt auf CD |
Wird der Status einer CheckBox verändert, löst das Control autom. das CheckedChanged-Ereignis aus. Aus diesem Ereignis heraus lässt sich jedoch nicht feststellen, ob der Status durch den Anwender verändert wurde (Maustaste bzw. Leertaste, wenn das Control den Fokus hat) oder durch den eigenen Programm-Code.
Wollen Sie jedoch eine bestimmte Funktion nur dann ausführen, wenn der Status durch den Anwender verändert wurde, müssen Sie das Click-Ereignis verwenden. Das Click-Ereignis wird nämlich nur dann ausgelöst, wenn der Status der CheckBox tatsächlich per Mausklick oder Leertaste geändert wurde. Es wird nicht ausgelöst, wenn Sie die Checked-Eigenschaft per Code verändern.
Beispiel:
Erstellen Sie ein neues Projekt und platzieren auf die Form eine CheckBox, sowie einen Button. Fügen Sie nachfolgenden Code ein:
Public Class Form1 Private Sub Button1_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button1.Click ' Statusänderung per Code (keine MsgBox anzeigen!) CheckBox1.Checked = Not CheckBox1.Checked End Sub Private Sub CheckBox1_Click(ByVal sender As Object, _ ByVal e As System.EventArgs) Handles CheckBox1.Click ' Diese Meldung erscheint nur, wenn der Status durch den ' Anwender geändert wurde MsgBox("Statusändeung durch den Anwender!") End Sub End Class