模拟ListBox的DataSridView的MultiSimple SelectionMode

时间:2014-02-19 09:06:01

标签: c# winforms user-interface datagridview

我已将DGV的SelectionMode设置为FullRowSelect,将MultiSelect设置为true。

因为这将在触摸屏上使用,用户可能无法访问键盘以在选择项目时按住控件或按住按钮,我想模拟ListBox与其MultiSimple一起使用的行为模式。

我想知道最简单的方法是什么。我的第一个想法是捕获鼠标按下事件然后“按下”用户的控制键,但我实际上不确定如何做到这一点。我知道如何使用SendKeys,但我认为只需按&释放控制键,而不是让我能够选择何时释放按钮。

建议?

编辑:我已尝试过此处列出的解决方案:Select multiple Rows without pressing Control Key

此解决方案的问题在于,每次更改选择时屏幕都会闪烁,这看起来很糟糕。我想要一些不会给潜在客户带来不良印象的产品。

我看到它的方式,唯一的方法是能够模拟用户点击时按住控制按钮,或者防止数据网格在用户点击时取消选择其他行。关于如何做这些事情的建议将不胜感激。

1 个答案:

答案 0 :(得分:1)

我会覆盖原来的DataGridView课程并更改OnCellMouseDown事件。

代码如下:

public partial class MyDataGridView : DataGridView
{
    public MyDataGridView()
    {

    }

    protected override void OnCellMouseDown(DataGridViewCellMouseEventArgs e)
    {
        this.Rows[e.RowIndex].Selected = !this.Rows[e.RowIndex].Selected;
    }
}

我在我的机器上尝试了DataGridView包含超过1000行,并且它运行良好(没有闪烁)。 这种方法的问题在于您的DataGridView单元格是可编辑的。但我没有理由将MultiSelect与可编辑单元格结合起来,这没有任何意义。