我有一个dataGridView控件,SelectionMode属性设置为CellSelect . 我正在使用CellBeginEdit和CellEndEdit方法在编辑之前和之后获取值 . 在这两种情况下,我一直在使用以下内容来获取相关单元格 .
dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex]
例如,如果我编辑第一行,e.RowIndex&e.ColumnIndex在CellBeginEdit和CellEndEdit中都为零 . 如果我按Enter键结束编辑,则所需的单元格就在CellEndEdit中(第0行,第0列) . 所有这一切都是预期的 .
但是,如果我正在编辑打开排序的列,并且通过单击另一行中的单元格来结束编辑,则在调用CellEndEdit之前按字母顺序重新排序行 . 因此,即使事件参数对于e.RowIndex和e.ColumnIndex仍然包含零,我的编辑行可能不在该索引处 .
该行永远不会直观地更改位置,并且在CellBeginEdit中将列的SortMode属性设置为NotSortable不会影响该行为 .
这是微软的错误还是我错过了什么?此外,如果这种行为是不可避免的,那么在CellEndEdit中获取我编辑的行的最佳方法是什么?
1 回答
好吧,在尝试了许多不同的解决方法后,我发现了一个有效的方法:
希望这有助于其他人 .