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

时间:2014-08-20 17:37:47

标签: c# winforms checkbox datagridview

我搜索过并找不到适用于我的问题的解决方案,所以这是我的情况:

我在WinForms中有一个datagridview,并希望包含复选框的整个单元格可以选中/取消选中该框。目前,我必须完全点击复选框本身。

我不希望我的用户必须玩#34;复选框狙击手"。它很烦人。

由于 -Michele

2 个答案:

答案 0 :(得分:2)

我不确定是否存在某种直接方式,但您可以处理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.CellValueChanged并使用一些标志来检测更改是由正常检查还是由CellClick事件处理程序引起。

答案 1 :(得分:0)

首先按照此link获取单元格点击事件。你可以修改checkbox.checked代码。 this教程也很好,选择正确的单元格并检查那里的复选框