DataGridView在左键单击时保持选择多行

时间:2011-01-11 18:45:31

标签: c# winforms

在我的DataGridView上,我将SelectionMode设置为FullRowSelect。当我在DataGridView中选择多行并左键单击一个单元格时,取消选中所有其他行,只选择我左键单击的行。右键单击不会发生这种情况。

如何设置DataGridView以便我可以选择多行,左键单击一个单元格,所有相同的行都保持选择状态?

1 个答案:

答案 0 :(得分:2)

这可能很难,因为它违反了Windows的标准UI行为。您可能需要让UI跟踪DGV中选择的行,并在左键单击后“恢复”上一个选择。但是,这会给你带来更多问题。即:

  • 如何/何时重置选择?
  • 如果不允许左键单击更改选择,那么如何在第一个位置选择行?
  • 等等。

更全面的替代方案是在DGV上捕获所有MouseDown / Click事件并实现您自己的选择行为,尽管我不确定WinForms甚至可以达到什么程度。

我的拙见是重新考虑这个UI设计。它是否符合用户的期望? :)

更新:我刚刚想到的另一种选择:如果出于某种原因这种行为是完全必要的,那么最好的办法就是创建一个自定义控件来增加一种“选择锁定“状态到DataGridView。然后,用户可以显式请求此覆盖到Windows的默认行为(例如,通过选择行然后单击“锁定”按钮)。然而,构建这样的东西并不是微不足道的。