我用 CurrentCellDirtyStateChanged 处理我的复选框单击事件。我希望能够在我单击包含复选框的单元格时处理相同的事件,即当我单击单元格时,选中复选框并调用DirtyStateChanged。使用以下代码没有太大帮助,它甚至没有调用 CurrentCellDirtyStateChanged。我已经没有什么想法了。
private void dataGridView_CellClick(object sender, DataGridViewCellEventArgs e)
{
if(dataGridView.Columns[e.ColumnIndex].ReadOnly != true)
{
//option 1
(dataGridView.CurrentRow.Cells[e.ColumnIndex] as DataGridViewCheckBoxCell).Value = true;
//option 2
DataGridViewCheckBoxCell cbc = (dataGridView.CurrentRow.Cells[e.ColumnIndex] as DataGridViewCheckBoxCell);
cbc.Value = true;
//option 3
dataGridView.CurrentCell.Value = true;
}
}
5条答案
按热度按时间bwleehnv1#
正如Bioukh指出的,必须调用
NotifyCurrentCellDirty(true)
来触发事件处理程序。但是,添加该行将不再更新选中状态。要完成选中状态的更改 on click,我们将添加对RefreshEdit
的调用。这将在单击单元格时切换单元格的选中状态。但是它也会使第一次单击实际的复选框有点麻烦。因此,我们添加如下所示的CellContentClick
事件处理程序,您应该可以开始了。第一个
af7jpaap2#
这应该可以实现您的目的:
bvjxkvbb3#
这些改变对我起作用了!
k2arahey4#
使用
HelperClass
中的静态函数实现OhBeWise解决方案的更通用方法在你的代码后面
dataGridView1.CellClick += HelperClass.DataGrid_CheckBoxCellClick;
332nm8kg5#
不需要以下代码:-)
您可以将它写得更简单: