我有一个DataGridView.In CheckBox列是There.if我想检查DataGrid中的复选框如果没有选中复选框,则一个按钮是可见的按钮将被启用,如果我选择了多于5个复选框,则一个小心将我试着这样尝试
private void GridView1_CellClick(object sender, DataGridViewCellEventArgs e)
{
DataGridViewCheckBoxCell ch1 = new DataGridViewCheckBoxCell();
ch1 = (DataGridViewCheckBoxCell)GridView1.Rows[GridView1.CurrentRow.Index].Cells[0];
if (ch1.Value == null)
{
btnShow.Visible = false;
}
else
btnShow.Visible = true;
}
在这里,我没有得到Exact Out Put。我怎样才能解决这个Pls帮助...
答案 0 :(得分:-1)
CellContentClick
代替CellClick
。 CheckBox
值仅在前者中触发更改。CurrentCell
代替当前行Cells[0]
,否则即使您点击了同一行中CheckBoxCell
以外的其他单元格,也会不必要地触发此代码。 CheckBoxCell
(选中/取消选中),则遍历行以计算正确列中已检查单元格的数量。 Cell.Value
可以是null
,true
或false
,当前点击的单元格尚未反映新值。因此,请使用Cell.EditedFormattedValue
,其中包含更新后的值,并且始终为true
或false
。例如:
private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
if ((dataGridView1.CurrentCell as DataGridViewCheckBoxCell) != null)
{
int count = 0;
foreach (DataGridViewRow row in dataGridView1.Rows)
{
bool isChecked = (bool)row.Cells[0].EditedFormattedValue;
if (isChecked)
{
count++;
}
}
btnShow.Visible = count > 0; // Whatever your condition may be.
if (count > 5)
{
// Your caution here. For example:
MessageBox.Show(this, "Danger, Will Robinson!", "Caution");
}
}
}