我已将DGV的SelectionMode设置为FullRowSelect,将MultiSelect设置为true。
因为这将在触摸屏上使用,用户可能无法访问键盘以在选择项目时按住控件或按住按钮,我想模拟ListBox与其MultiSimple一起使用的行为模式。
我想知道最简单的方法是什么。我的第一个想法是捕获鼠标按下事件然后“按下”用户的控制键,但我实际上不确定如何做到这一点。我知道如何使用SendKeys,但我认为只需按&释放控制键,而不是让我能够选择何时释放按钮。
建议?
编辑:我已尝试过此处列出的解决方案:Select multiple Rows without pressing Control Key
此解决方案的问题在于,每次更改选择时屏幕都会闪烁,这看起来很糟糕。我想要一些不会给潜在客户带来不良印象的产品。
我看到它的方式,唯一的方法是能够模拟用户点击时按住控制按钮,或者防止数据网格在用户点击时取消选择其他行。关于如何做这些事情的建议将不胜感激。
答案 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
与可编辑单元格结合起来,这没有任何意义。