为什么我的datagridview行被排序时退出编辑模式

本文关键字:退出 编辑 模式 排序 我的 datagridview 为什么 | 更新日期: 2023-09-27 18:04:11

我有一个dataGridView控件的SelectionMode属性设置为CellSelect。我使用的是CellBeginEdit &CellEndEdit方法获取&编辑后。在这两种情况下,我一直在使用以下命令来获取相关单元格。

dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex]

作为一个例子,如果我编辑第一行,e.RowIndex &在CellBeginEdit &CellEndEdit。如果我按enter键结束编辑,所需的单元格就在cellenddit中的那里(第0行,第0列)。

但是,如果我正在编辑已打开排序的列,并且通过单击另一行上的单元格结束编辑,则在调用cellenddit之前,将按字母顺序重新排序这些行。因此,即使事件参数仍然为e.RowIndex &e.ColumnIndex,我编辑的行可能不在那个索引

行在视觉上永远不会改变位置,并且在CellBeginEdit中将列的SortMode属性设置为NotSortable不会影响行为。

这是微软的错误还是我错过了什么?此外,如果这种行为是不可避免的,什么是最好的方式来获得我的编辑行在CellEndEdit?

为什么我的datagridview行被排序时退出编辑模式

嗯,在尝试了许多不同的解决方法之后,我找到了一个有效的方法:

    private void dataGridView1_CellValidated(object sender, DataGridViewCellEventArgs e)
    {
        DataGridViewCell cell = dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex];
        if (cell.IsInEditMode)
        {
            ...
        }
    }