我在Windows窗体中使用未绑定的DataGridView。一些列启用了“自动”排序(单击列标题进行排序)。
如果没有选择任何行(MyDataGridView.SelectedRows.Count == 0),并且我单击要排序的列标题,则会选择一行。该行恰好是填充DGV时添加到DGV的第一行。这是不良行为;我不希望选择在列排序之前未选择的行。
或者-当我通过单击选择一行,然后使用列标题进行排序时,同一行仍然处于选中状态。这是期望的行为。
此外,如果我随后使用MyDataGridView.ClearSelection()以编程方式取消选择所有行,然后进行排序,那么现在将重新选择先前选择的行。这是不受欢迎的行为。
每次执行排序(这会导致所选内容更改)时,都会触发“SelectionChanged”事件。不幸的是,我无法辨别事件的原因。这是由于我点击了一行,还是做了排序?
即使我以编程方式执行排序,也会出现此问题。
是否有一种方法可以确保在排序后只选择以前选择的行?我已经搜索了答案,并阅读了一些帖子,但找不到任何有帮助的东西。
1条答案
按热度按时间qncylg1j1#
多亏了Jimi,我最终得到了这个解决方案--如果在标题单元格中单击(用于排序),则由CellClick事件设置sortClick标志。它在SelectionChanged事件中拾取,如果设置,将清除DGV选择。