我在winforms中使用DataGridView
处理CellPainting
事件,以便自己绘制所有单元格。
我的网格是虚拟的,并且所有数据都存储在以MemoryStream
为中心的自定义数据结构中。
我的所有绘画都很顺利,直到用户 Shift +点击一次选择大范围的细胞(25,000+),这些细胞必须添加到选定的细胞集合中,有一堆标志设置,以及其他性能耗尽操作。
有没有办法阻止DataGridView“选择”一个单元格,这样我就能以更有效的方式单独处理这个操作?
答案 0 :(得分:2)
这里的问题有点困惑。
如果您不希望他们根本无法选择多个单元格,请设置
dataGridView.MultiSelect = false
你说他们按住ctrl +点击25k单元格 - 你建议他们一次选择25k单元格(这就是ctrl + click的工作方式)?如果您的意思是他们按住Shift键单击以选择范围,则只需处理SelectionChanged
事件,并执行您对dataGridView.SelectedRows
所需的任何操作。对于整个选择,SelectionChanged
只会被调用一次。