如何在c#中更改复选框值时在DataGridView中检查复选框?
问题描述:
我无法计数DataGridView中的复选框。在复选框被选中的时候,我想对选中的复选框进行计数,并在标签中存储选中项目的数量。我想下面的代码,但是没有得到正确的计数:如何在c#中更改复选框值时在DataGridView中检查复选框?
int num = 0;
private void dgvLoadData_CellValueChanged(object sender, DataGridViewCellEventArgs e)
{
bool isChecked = Convert.ToBoolean(dgvLoadData.Rows[dgvLoadData.CurrentCell.RowIndex].Cells[0].Value.ToString());
if (isChecked)
{
num+=1;
}
else
{
num-=1;
}
labelSelectedSum.Text = "Selected Items: " + num;
}
答
在桌子上应用CurrentCellDirtyStateChanged
事件。致电gridview.CommitEdit
更新复选框列的值。请执行以下操作:
private void dgvLoadData_CurrentCellDirtyStateChanged(object sender, EventArgs e)
{
if (dgvLoadData.IsCurrentCellDirty)
{
dgvLoadData.CommitEdit(DataGridViewDataErrorContexts.Commit);
}
}
这会调用_CellValueChanged
事件。任何更改将在代码完成里面CellValueChanged
事件:
int num = 0;
private void dgvLoadData_CellValueChanged(object sender, DataGridViewCellEventArgs e)
{
bool isChecked = Convert.ToBoolean(dgvLoadData.Rows[dgvLoadData.CurrentCell.RowIndex].Cells[0].Value.ToString());
if (isChecked)
{
num+=1;
}
else
{
num-=1;
}
labelSelectedSum.Text = "Selected Items: " + num;
}
答
您可以使用事件:CellContentClick和CellContentDoubleClick:
祝您好运!
int num = 0;
private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
bool isChecked = (bool)dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].EditedFormattedValue;
CheckCount(isChecked);
}
private void dataGridView1_CellContentDoubleClick(object sender, DataGridViewCellEventArgs e)
{
bool isChecked = (bool)dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].EditedFormattedValue;
CheckCount(isChecked);
}
private void CheckCount(bool isChecked)
{
if (isChecked)
{
num++;
}
else
{
num--;
}
labelSelectedSum.Text = "Selected Items: " + num;
}
答
我有一个DataTable绑定到我的DataGridView,我检查第一列具有任何选中复选框 这是我的例子:
private void dataGridViewMain_CellValueChanged(object sender, DataGridViewCellEventArgs e)
{
if (e.ColumnIndex == 0)
{
int numberOfRow = dataTableCsvFile.AsEnumerable().Count(r => r[0].ToString() == true.ToString());
buttonDataGridviewVerify.Enabled = numberOfRow > 0;
}
}
当越来越检查这些复选框?只是当datagridview绑定数据? – renakre
看看下面的@Michay。 http://stackoverflow.com/questions/1237829/datagridview-checkbox-column-value-and-functionality以及http://www.codeproject.com/Articles/42437/Toggling-the-States-of-all-CheckBoxes -Inside-a-Dat –
你的代码似乎只适用于单行,如果单元格被选中则返回1,否则返回'-1'。由于您只使用一行,因此您希望如何计算任何内容? –