如何在Datagridview中访问已更改的选择的索引

本文关键字:选择 索引 访问 Datagridview | 更新日期: 2023-09-27 17:53:26

我正在做一个windows窗体。现在我为一个看似简单的问题感到非常头疼。

我有一个datagridview,并希望允许右键选择。因此,我创建了一个名为dataGridViewJobs_MouseDown的函数,该函数在datagridview的MouseDown上引发:

private void dataGridViewJobs_MouseDown(object sender, MouseEventArgs e)
{
    int curRowIdx = dataGridViewJobs.HitTest(e.Location.X, e.Location.Y).RowIndex;
    if (curRowIdx != -1 && curRowIdx < dataGridViewJobs.Rows.Count)
    {
        dataGridViewJobs.CurrentCell = dataGridViewJobs[0, curRowIdx];
    }
}

执行hitTest以查找所单击单元格的行索引。然后将datagridview的currentCell设置为所述行的第一个单元格。

这会引发SelectionChanged-event。这连接到以下功能:

private void dataGridViewJobs_SelectionChanged(object sender, EventArgs e)
{
    if (dataGridViewJobs.Rows.Count > 0)
    {
         Console.WriteLine(dataGridViewJobs.CurrentCell.RowIndex);
    }
 }

将旧索引写入控制台。为什么呢?

我目前正在使用一个解决方案,这意味着我将hitTest的结果保存在一个全局变量中。但这不可能是正确的方法。

我做错了什么吗?提前感谢!

如何在Datagridview中访问已更改的选择的索引

From MSDN

当您更改CurrentCell属性的值时SelectionChanged事件发生在CurrentCellChanged事件之前。任何访问CurrentCell属性的SelectionChanged事件处理程序这一次将得到它之前的值。

使用CurrentCellChanged事件打印当前值