c# winforms datagridview复选框-增加可点击区域到整个列的宽度

本文关键字:区域 复选框 datagridview winforms 增加 | 更新日期: 2023-09-27 18:19:02

我已经搜索并发现没有解决方案,适用于我的问题,所以这是我的情况:

我在WinForms中有一个datagridview,并希望包含复选框的整个单元格使该框被选中/未选中。目前,我必须在复选框内点击。

我不希望我的用户不得不玩"复选框狙击"。真烦人。

谢谢米歇尔。

c# winforms datagridview复选框-增加可点击区域到整个列的宽度

我不确定是否有一些直接的方法,但您可以处理DataGridView。CellClick事件:

private void dataGridView_CellClick(object sender,
    DataGridViewCellEventArgs e)
{
    DataGridView dgv = (DataGridView)sender;
    if (!(dgv.Columns[e.ColumnIndex] is DataGridViewCheckBoxColumn))
         return;
    DataGridViewCheckBoxCell cell = (DataGridViewCheckBoxCell)
        dgv.Rows[e.RowIndex].Cells[e.ColumnIndex];
    cell.Value = !(Boolean)cell.Value;
}

但是有一个问题:

对于DataGridViewCheckBoxCell中的单击,此事件发生在复选框更改值,因此如果您不想计算期望值基于当前值,您通常会处理DataGridView。CellValueChanged事件。

因此,为了避免不愉快的效果,你还必须处理DataGridView。

cellvaluechange并使用一些标志来检测更改是由正常检查还是由CellClick事件处理程序引起的。

首先获得单元格单击事件遵循此链接。在此基础上,您可以更改复选框。检查代码。本教程也很好,选择正确的单元格并勾选那边的复选框