Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 还记得选择DataGridViewRows的顺序吗?_C#_Winforms - Fatal编程技术网

C# 还记得选择DataGridViewRows的顺序吗?

C# 还记得选择DataGridViewRows的顺序吗?,c#,winforms,C#,Winforms,我想知道是否可以记住选择行的顺序。我目前有一个DataGridView,它绑定到一个项目集合。在使用键盘选择行的过程中,OnRowStateChanged可能会错误地激发 有什么想法吗 编辑 我使用的是SelectionMode.FullRowSelect,在选择新行时,当前选择似乎丢失。 感谢Rohan您可以捕获RowEnter和RowLeave事件,以跟踪访问行的顺序。这些处理程序的参数包含具有行索引的事件参数。在处理程序主体中,您可以使用链接列表作为FIFO队列,以遵循访问行的顺序。刚

我想知道是否可以记住选择行的顺序。我目前有一个DataGridView,它绑定到一个项目集合。在使用键盘选择行的过程中,OnRowStateChanged可能会错误地激发

有什么想法吗

编辑

我使用的是SelectionMode.FullRowSelect,在选择新行时,当前选择似乎丢失。


感谢Rohan

您可以捕获RowEnter和RowLeave事件,以跟踪访问行的顺序。这些处理程序的参数包含具有行索引的事件参数。在处理程序主体中,您可以使用链接列表作为FIFO队列,以遵循访问行的顺序。

刚刚验证,第一个选定的行位于列表的末尾:

private void button1_Click(object sender, EventArgs e)
{

    for (int i = dataGridView1.SelectedRows.Count - 1; i >= 0; --i)
    {
        var r = dataGridView1.SelectedRows[i];
        MessageBox.Show(r.Cells[0].Value.ToString());
    }

 }

这看起来不错,但是,当您使用键盘执行选择时,顺序不正确。请尝试选择一行,然后按住shift键并使用向上箭头键选择上面的行。此答案是确定的,因为SelectedRows按相反顺序保存了用户选择行;请在此处查看我的asnwer: