How to detect DataGridView CheckBox event change?

后端 未结 16 2390
离开以前
离开以前 2020-11-27 12:43

I have a winforms app and want to trigger some code when a checkbox embedded in a DataGridView control is checked / unchecked. Every event I have tried either

16条回答
  •  执念已碎
    2020-11-27 13:44

    I've tried some answers from here, but I've always had some kind of problem (like double clicking or using the keyboard). So, I combined some of them and got a consistent behavior (it's not perfect, but works properly).

    void gridView_CellContentClick(object sender, DataGridViewCellEventArgs e) {
      if(gridView.CurrentCell.GetType() != typeof(DataGridViewCheckBoxCell))
        return;
      if(!gridView.CurrentCell.IsInEditMode)
        return;
      if(!gridView.IsCurrentCellDirty)
        return;
      gridView.EndEdit();
    }
    
    void gridView_CellMouseUp(object sender, DataGridViewCellMouseEventArgs e) {
      if(e.ColumnIndex == gridView.Columns["cFlag"].Index && e.RowIndex >= 0)
        gridView.EndEdit();
    }
    
    void gridView_CellValueChanged(object sender, DataGridViewCellEventArgs e) {
      if(e.ColumnIndex != gridView.Columns["cFlag"].Index || e.RowIndex < 0)
        return;
    
      // Do your stuff here.
    
    }
    

提交回复
热议问题