Los dos eventos son efectivamente iguales a menos que establezca la propiedad ThreeState
en true
. Sin haber establecido ThreeState
, ambos se activarán cuando la casilla de verificación esté marcada o desmarcada y ambos se activarán después de el valor ha cambiado.
La principal diferencia es cuando usted configura ThreeState
true, lo cual se suma la Indeterminate
CheckState
:
- El control considera
Indeterminate
a ser "controlada". (Checked == true
).
- La transición entre
Checked
y Unchecked
es la misma que antes.
- La transición entre
Checked
y Indeterminate
hace no desencadenar el evento CheckedChanged
, porque Checked
estancias true
.
- La transición entre
Unchecked
y Indeterminate
hace desencadenar el evento CheckedChanged
, debido a los cambios de Checked
false
a true
o viceversa.
- Al hacer clic en una casilla de verificación de tres estados, los estados pasan de
Unchecked
a Checked
a Indeterminate
y luego a Unchecked
.Todavía puede realizar la transición de Unchecked
a Indeterminate
mediante programación.
(Tenga en cuenta la diferencia entre la propiedad Checked
, que es una propiedad booleana dos estados, y el estado Checked
, que es uno de los tres valores posibles de la propiedad CheckState
.)
TL; DR: La principal diferencia práctica es que el evento CheckedChanged
no se activa en una casilla de verificación de tres estados al pasar de CheckState.Checked
a CheckState.Indeterminate
o viceversa, porque se considera que ambos estados están marcados (Checked == true
).
Esto es falso, ambos eventos se activan después de que se haya cambiado el valor. –