【发布时间】:2014-05-19 20:59:50
【问题描述】:
我有一个将 SelectionMode 属性设置为 CellSelect 的 dataGridView 控件。我正在使用 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 中获取我编辑的行的最佳方法是什么?
【问题讨论】:
标签: c# winforms datagridview