0

我有DataGridView几列,每一行代表我的对象,具有几个属性,如名称、id 等。更改后我Name column Checkbox想更新我的对象我怎样才能获得我的列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")
    {

    }
}
4

2 回答 2

2

我假设NameDataGridViewCheckBoxColumn

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;
}
于 2013-10-18T10:27:51.563 回答
0

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

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

或者

isChecked = cbName.Checked;
于 2013-10-18T10:34:04.513 回答