如何检查bool
中复选框的datagridview
条件。如果选中,我希望true
,如果未选中则false
。任何人都可以帮助我。
是否可以在dataGridView_CellContentClick
答案 0 :(得分:6)
有关DataGridView here和here的MSDN页面上的一点说明。
他们特别说:
对于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);
}
至于获取选中的值 - 这只是DataGridViewCheckBoxCell的Value属性。
所以,如果你去:
dataGridView1.Rows[rowindex].Cells[cellindex].Value
你得到一个与复选框相对应的布尔值(在提交更改后)。
答案 1 :(得分:0)
如果在设计器中定义了复选框,则只需查看复选框的名称并检查其“checked”属性是否为true / false。
但我怀疑你是通过代码将复选框添加到数据网格?
在这种情况下,您必须保存对somwhere复选框的引用。 如果我将你添加到datagrid的所有复选框添加到列表中,或者如果你想通过名称引用它们,我会将它们添加到字典中。
您还可以通过选择事件并单击属性面板中的小螺栓图标并找到checkedChanged事件并双击它来将事件绑定到Checked_Changed事件复选框。
在事件代码中,您可以通过键入以下内容获取单击的复选框: CheckBox mycheckbox = sender作为CheckBox;
,然后引用mycheckbox.checked获取bool,如果已选中或未选中。
答案 2 :(得分:0)
您可以尝试以这种方式获取此信息,例如,如果您根据索引循环网格,则可以找到已检查状态。
bool IsChecked = Convert.ToBoolean((dataGridView1[ColumnIndex, RowIndex] as DataGridViewCheckBoxCell).FormattedValue))
答案 3 :(得分:0)
private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
var checkcell = new DataGridViewCheckBoxCell();
checkcell.FalseValue = false;
checkcell.TrueValue = true;
checkcell.Value = false;
dataGridView1[0, 0] = checkcell; //Adding the checkbox
if (((bool)((DataGridViewCheckBoxCell)dataGridView1[0, 0]).Value) == true)
{
//Stuff to do if the checkbox is checked
}
}
答案 4 :(得分:0)
100%工作。
private void grd_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
grd.CommitEdit(DataGridViewDataErrorContexts.Commit);
bool Result = Convert.ToBoolean((grd[e.ColumnIndex, e.RowIndex] as DataGridViewCheckBoxCell).Value);
}