单击并取消选中复选框单元格时,DataGridView运行方法

时间:2017-06-22 13:54:26

标签: c# winforms events datagridview

这似乎是一些非常基本的功能,但我无法在StackOverflow或文档中找到任何具体示例。

检查DataGridView的事件似乎没有任何可以直接监视复选框单元格中的更改的内容。

任何人都可以提供一个监控datagridview中的复选框检查事件然后执行方法的示例吗?

1 个答案:

答案 0 :(得分:0)

经过一段时间的搜索后,我发现获取更改值的最佳方法是检查CurrentCellDirtyStateChanged并使用该触发器进行编辑并检查单元格的当前值:

private void DataGrid_CellValueChanged(object sender, DataGridViewCellEventArgs e)
{
    if (DataGrid.Columns[e.ColumnIndex].Name == "colReserved")
    {

        DataGridViewCheckBoxCell checkCell = (DataGridViewCheckBoxCell)DataGrid.Rows[e.RowIndex].Cells["colReserved"];

        if ((Boolean)checkCell.Value)
        {
            //Checked
            MessageBox.Show("Checked");
        }
        else
        {
            //Not Checked
            MessageBox.Show("UnChecked");
        }

        DataGrid.Invalidate();
    }
}

private void DataGrid_CurrentCellDirtyStateChanged(object sender, EventArgs e)
{
    if (DataGrid.IsCurrentCellDirty)
    {
        DataGrid.CommitEdit(DataGridViewDataErrorContexts.Commit);
    }
}