Die beiden Ereignisse sind effektiv gleich, es sei denn, Sie setzen die ThreeState
Eigenschaft auf true
. Ohne dass ThreeState
festgelegt wurde, werden beide ausgelöst, wenn das Kontrollkästchen aktiviert oder deaktiviert ist und beide feuern nach der Wert hat sich geändert.
Der Hauptunterschied ist, wenn Sie ThreeState
auf true gesetzt haben, die das fügt Indeterminate
CheckState
:
- Die Steuerung
Indeterminate
als „geprüft“ hält. (Checked == true
).
- Der Übergang zwischen
Checked
und Unchecked
ist der gleiche wie zuvor.
- Übergang zwischen
Checked
und Indeterminate
tut nicht Feuer des CheckedChanged
Ereignis, weil Checked
Aufenthalte true
.
- Übergang zwischen
Unchecked
und Indeterminate
tut Brand CheckedChanged
Ereignis, weil Checked
Änderungen von false
zu true
oder umgekehrt.
- Wenn Sie auf ein Kontrollkästchen mit drei Status klicken, wechseln die Status von
Unchecked
zu Checked
zu Indeterminate
und zurück zu Unchecked
.Sie können weiterhin programmgesteuert von Unchecked
zu Indeterminate
wechseln.
(Man beachte den Unterschied zwischen der Checked
Eigenschaft, die eine Zweizustands boolesche Eigenschaft ist und der Checked
Zustand, der einer der drei möglicher Werte der CheckState
Eigenschaft.)
TL; DR: Der wichtigste praktische Unterschied besteht darin, dass das Ereignis CheckedChanged
beim Übergang von CheckState.Checked
zu CheckState.Indeterminate
oder umgekehrt nicht auf ein Kontrollkästchen mit drei Status aktiviert wird, da beide Zustände als überprüft gelten (Checked == true
).
Dies ist falsch, beide Ereignisse werden ausgelöst, nachdem der Wert geändert wurde. –