C# 所选行的第一个单元格的索引超出范围

C# 所选行的第一个单元格的索引超出范围,c#,indexing,C#,Indexing,我得到一个错误:“索引超出范围。必须是非负的并且小于集合的大小。” 我试图从所选行中提取第一个单元格的值。我做错了什么?保存选定行的数组。如果选择了2行,则其中的最大可访问索引为1。您尝试通过CurrentRow.Index属性访问它,该属性是行在整个网格中的相对位置。所以你得到了索引超出范围的异常。如果你 想 从选定行中拾取第一个单元格的值 你应该使用 playerProfileID = (int)transfersDGV.SelectedRows[transfersDGV.CurrentRo

我得到一个错误:“索引超出范围。必须是非负的并且小于集合的大小。” 我试图从所选行中提取第一个单元格的值。我做错了什么?

保存选定行的数组。如果选择了2行,则其中的最大可访问索引为1。您尝试通过
CurrentRow.Index
属性访问它,该属性是行在整个网格中的相对位置。所以你得到了索引超出范围的异常。如果你 想

从选定行中拾取第一个单元格的值

你应该使用

playerProfileID = (int)transfersDGV.SelectedRows[transfersDGV.CurrentRow.Index]
                                   .Cells[0].Value;

如果不知道您在代码中使用的类型,我无法确定。。。
transfersDGV
是某种迭代器吗?某些迭代器在遍历整个集合后,会指向集合的结尾或后面。另一种选择是,它需要以某种方式初始化。
单元格
为空也可能有问题,在这种情况下,
单元格[0]
实际上会导致异常。

您需要使用

(int)transfersDGV.SelectedRows[0].Cells[0].Value;
SelectedRows
包含当前选定行的集合。如果选择1,则它包含该行。如果选择10,它将包含这些10

您需要检查是否选择了任何行,然后选择第一行(或您需要的任何一行)以获取第一个单元格的值


CurrentRow
是当前具有焦点的行,可能在所选行中,也可能不在所选行中。

是否没有选择行?或者它有零个单元格?尝试将代码行拆分为两行。一个用于选择行,然后一个用于获取单元格。那么它会在哪一个上面抛出错误呢?这里没有足够的代码或信息供任何人帮助您。那些指数中哪一个是抱怨的?选择的
单元格
?实际上有选择的行吗?什么是
传输GV.CurrentRow.Index
?你做过任何基本的调试吗?也许把它分解一下,然后首先将“transferDGV.CurrentRow.Index”的值赋给一个变量,以确保你得到的是一个选中的行。
transfersDGV.SelectedRows[0].Cells[0].Value