Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 单击并取消选中复选框单元格时DataGridView运行方法_C#_Winforms_Events_Datagridview - Fatal编程技术网

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

C# 单击并取消选中复选框单元格时DataGridView运行方法,c#,winforms,events,datagridview,C#,Winforms,Events,Datagridview,这似乎是一些非常基本的功能,但我在StackOverflow或文档中找不到任何具体的示例 检查DataGridView的事件似乎没有任何可以直接监视checkboxcell中的更改的可用内容 任何人都可以提供一个在datagridview中监视复选框检查事件然后执行方法的示例吗?经过一段时间的搜索后,我发现获取更改值的最佳方法是检查CurrentCellDirtyStateChanged,然后触发编辑并检查单元格当前值: private void DataGrid_CellValueChange

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

检查DataGridView的事件似乎没有任何可以直接监视checkboxcell中的更改的可用内容


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

经过一段时间的搜索后,我发现获取更改值的最佳方法是检查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);
    }
}