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

时间:2015-06-05 08:42:54

标签: c# winforms datagridview

我正在处理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事件。这与以下功能相关:

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

这会将旧索引写入控制台。这是为什么?

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

我做错了吗?提前谢谢!

1 个答案:

答案 0 :(得分:1)

From MSDN

  

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

使用CurrentCellChanged事件打印当前值