C# 如何从DataGridView中的选定行中获取最后选定行的索引

C# 如何从DataGridView中的选定行中获取最后选定行的索引,c#,winforms,datagridview,.net-2.0,C#,Winforms,Datagridview,.net 2.0,我有一个DataGridView,当我选择多行时,我想要最后一行的索引。换句话说,如何从选定的行中获得最大的most索引 e、 例如,如果我选择第0行、第1行和第6行,我希望输出为“6” 关于。var x=dataGridView1.SelectedRows.Cast().Max(row=>row.Index); if (dataGridView1.SelectedRows.Count > 0) { int lastIndex = dataGridView1.SelectedRow

我有一个DataGridView,当我选择多行时,我想要最后一行的索引。换句话说,如何从选定的行中获得最大的most索引

e、 例如,如果我选择第0行、第1行和第6行,我希望输出为“6”

关于。

var x=dataGridView1.SelectedRows.Cast().Max(row=>row.Index);
if (dataGridView1.SelectedRows.Count > 0)
{
    int lastIndex = dataGridView1.SelectedRows[dataGridView1.SelectedRows.Count - 1].Index;
}
与以下内容相同:

var y = dataGridView1.SelectedRows.Cast<DataGridViewRow>().Last().Index;
var y=dataGridView1.SelectedRows.Cast().Last().Index;

对不起,我正在为自己添加答案。还有其他更快的方法,但这是可行的

            List<int> lst = new List<int>();
            foreach (DataGridViewRow row in dg.SelectedRows)
                lst.Add(row.Index);

            lst.Sort();
            int i = lst[lst.Count - 1];
List lst=new List();
foreach(dg.SelectedRows中的DataGridViewRow行)
lst.Add(行索引);
lst.Sort();
int i=lst[lst.Count-1];
这样做的目的是将所有选定行的索引添加到
列表中,然后进行排序,然后从排序后的
列表中给出最后一项

注意:Bala R方法的问题在于,它取决于行的选择顺序(即所选指针所在的位置)。当所选行的顺序不一致时,它将失败。它给出最后选择的行,不一定是所选行中的最大most索引


谢谢大家

我将查看所选内容,获取最后一个选定行并检索其索引。根据你迄今为止所提供的,这是最好的答案。@Lazarus,但如何做到这一切。这背后的逻辑很简单。我一直在寻找代码来查看语法,看看它是如何完成的:(@Henk Holterman,让它成为任何东西。假设我有一个按钮,点击它就会在消息框中显示“6”(如果我按照我在问题中解释的方式选择了行)@nawfal,你没有抓住要点。“根据你目前提供的内容…”你问了一个模糊的问题,得到了一个模糊的答案。你尝试了什么,怎么会失败?这不是一个免费的编程资源商店。@nawfa你的问题和标签应该是WinForms,WebForms,WPF,…@nawfal我最后忘记了
.Index
。现在修复了。@Bala R,很抱歉,我再次遇到这个异常。
Index是你的范围的t。必须是非负的,并且小于集合的大小。
@Bala R,我发现了这个错误,但您的代码似乎没有像我想象的那样给出输出。不过稍微调整一下会得到完美的答案。谢谢:)@Bala R,您的技术的问题基本上是输出取决于行/单元格的选择顺序。我的意思是,只有从下到上的选择才能得到完美的答案。在.NET2.0中可能是什么?@nawfal:这就是LINQ,它只能在3.5或4.0中访问。使用@Bala的常规代码
            List<int> lst = new List<int>();
            foreach (DataGridViewRow row in dg.SelectedRows)
                lst.Add(row.Index);

            lst.Sort();
            int i = lst[lst.Count - 1];