C#通过拖动来更改datagridview单元格

时间:2014-11-10 19:33:24

标签: c# datagridview

我的程序从DataTable输出信息我将表单sql数据收集到DataGridview中,而DGV中的最后一列是一个复选框。我想知道是否有任何快速的方式/事件我可以使用,所以每当用户点击并拖动进行大量选择时(如在图像中,单击第二个单元格并向下拖动),所有选定的单元格都会将其状态更改为如果用户点击了每个复选框?

目标是使用快速批量编辑方式检查大量选择,因为这比检查每个复选框要容易得多。

如果没有用于拖动选择的事件处理程序,我将如何获得大型选择(开始单元格,结束单元格)的边界?

enter image description here

1 个答案:

答案 0 :(得分:1)

由于标准行为无法在没有一点编码的情况下使用DGV CheckBoxesCells,我将如何做到这一点,保持正常的Windows UI风格,即检查(和取消选中)CheckBoxes Space栏:

private void DGV_KeyDown(object sender, KeyEventArgs e)
{
    if( e.KeyCode == Keys.Space && DGV.CurrentCell.ColumnIndex == yourCheckBoxColumn)
    {
        foreach (DataGridViewCell cell in DGV.SelectedCells)
            if (cell.ColumnIndex == yourCheckBoxColumn)     
                                    cell.Value = !((bool)cell.FormattedValue);
    }
}

我重复检查以避免交叉选择时崩溃..

请注意,我决定反转每个Checkmark;这样即使是复杂的选择也很容易实现。我喜欢。您的里程可能会有所不同:您可以想要挑出第一个Cell并将所有单元格设置为与其值相反的..这实际上取决于您的用户!