Windows Forms' CheckBox CheckedChanged vs. CheckStateChanged
Solution 1:
CheckState (and thus CheckStateChanged) allow for using a checkbox that can have three values: it can be checked, unchecked or 'indeterminate' - i.e. it has ThreeState set to true.
If you're not using ThreeState, then CheckedChanged is all you need.
Solution 2:
My guess would be that it has to do with tri-state checkboxes. This is the guts of the CheckState setter:
if (this.checkState != value)
{
bool flag = this.Checked;
this.checkState = value;
if (base.IsHandleCreated)
{
base.SendMessage(0xf1, (int) this.checkState, 0);
}
if (flag != this.Checked)
{
this.OnCheckedChanged(EventArgs.Empty);
}
this.OnCheckStateChanged(EventArgs.Empty);
}