如何检查数据网格视图中的复选框是否已选中

Dor*_*eka 3 c# datagridview winforms

我如何检查复选框的bool状态datagridview.我想true检查,false如果它是未选中的.谁能帮我.

是否有可能处理这个问题 dataGridView_CellContentClick

Dav*_*all 6

这是在MSDN页DataGridView的解决一点点在这里这里.

他们特别说:

对于DataGridViewCheckBoxCell中的单击,此事件在复选框更改值之前发生,因此如果您不想根据当前值计算期望值,则通常会处理DataGridView.CellValueChanged事件.因为该事件仅在提交用户指定的值时发生(通常在焦点离开单元格时发生),所以还必须处理DataGridView.CurrentCellDirtyStateChanged事件.在该处理程序中,如果当前单元格是复选框单元格,则调用DataGridView.CommitEdit方法并传入Commit值.

所以他们建议不要使用CellClick类型的事件(因为他们从不推送值直到你离开单元格),而是使用CurrentCellDirtyStateChanged和CommitEdit方法.

所以你最终得到:

dataGridView1.CurrentCellDirtyStateChanged += new EventHandler(dataGridView1_CurrentCellDirtyStateChanged);
dataGridView1.CellValueChanged += new DataGridViewCellEventHandler(dataGridView1_CellValueChanged);

void dataGridView1_CellValueChanged(object sender, DataGridViewCellEventArgs e)
{
    if (dataGridView1.Columns[e.ColumnIndex].Name == "CB")
    {
        MessageBox.Show(dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString());    
    }
}

void dataGridView1_CurrentCellDirtyStateChanged(object sender, EventArgs e)
{
    dataGridView1.CommitEdit(DataGridViewDataErrorContexts.Commit);
}
Run Code Online (Sandbox Code Playgroud)

至于获取选中的值 - 这只是DataGridViewCheckBoxCell的Value属性.

所以,如果你去:

dataGridView1.Rows[rowindex].Cells[cellindex].Value 
Run Code Online (Sandbox Code Playgroud)

你得到一个与复选框相对应的布尔值(在提交更改后).