Dot-Net

Windows 窗體的 CheckBox CheckedChanged 與 CheckStateChanged

  • May 6, 2010

Windows 窗體的CheckBox控制項同時實現CheckedChangedCheckStateChanged事件。據我所知,當複選框的選中狀態發生更改時,兩者都會觸發。

CheckedChanged之前CheckStateChanged,但除此之外我沒有看到任何區別。我錯過了什麼嗎?是否應該優先於另一個?

我的猜測是它與三態復選框有關。這是 CheckState 設置器的核心:

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);
}

CheckState(因此 CheckStateChanged)允許使用可以具有三個值的複選框:它可以被選中、未選中或“不確定”——即,它的ThreeState設置為 true。

如果您不使用 ThreeState,那麼 CheckedChanged 就是您所需要的。

引用自:https://stackoverflow.com/questions/2782566