C# 更改后获取DataGridView复选框值

C# 更改后获取DataGridView复选框值,c#,datagridview,C#,Datagridview,我有DataGridView和几个列,每一行用几个属性表示我的对象,比如name、id等。 更改我的名称列后复选框我想更新我的对象 如何获取我的专栏Checknox状态? 这就是我所尝试的: private void dataGridView1_CurrentCellDirtyStateChanged(object sender, EventArgs e) { if (dataGridView1.IsCurrentCellDirty) { dataGridView

我有
DataGridView
和几个列,每一行用几个属性表示我的对象,比如name、id等。 更改我的
名称列后
复选框
我想更新我的对象 如何获取我的专栏
Checknox
状态? 这就是我所尝试的:

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

private void dataGridView1_CellValueChanged(object sender, DataGridViewCellEventArgs e)
{
    if (dataGridView1.Columns[e.ColumnIndex].Name == "Name")
    {

    }
}

我假设
Name
DataGridViewCheckBoxColumn

private void dataGridView1_CellValueChanged(object sender, DataGridViewCellEventArgs e)
{
    if (dataGridView1.Columns[e.ColumnIndex].Name == "Name")
    {
        var isChecked = dataGridView1[e.ColumnIndex, e.RowIndex].Value as bool? ?? false;
        //rest of logic
    }
}
这是最简单、最安全的方法

要遍历行中的所有单元格,请使用以下代码:

DataGridViewRow row = dataGridView1.Rows[e.RowIndex];
foreach (DataGridViewCell cell in row.Cells)
{
   object value = cell.Value;
}

也许您可以使用
FindControl()
获取复选框的状态:

CheckBox cbName = (CheckBox)dataGridView1.Columns[e.ColumnIndex].FindControl("cbName");
checkState = cbName.CheckState.toString();


这很好,如何从行中获取每列的值?
isChecked = cbName.Checked;