繁体   English   中英

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

[英]C# Change datagridview cells by dragging on them

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

目标是要有一种快速的批量编辑方式来检查大型选择,因为这比选中每个单独的复选框要容易得多。

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

在此处输入图片说明

由于标准行为在没有少量编码的情况下无法用于DGV CheckBoxesCells,因此我将按照常规Windows UI样式进行操作,即使用Space键检查(并取消选中) CheckBoxes

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。 这样,即使是复杂的选择也可以轻松实现。 我喜欢。 您的里程可能会有所不同:例如,您可能想选择第一个单元格并将所有单元格设置为其值的相反方向。这实际上取决于您的用户!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM