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

时间:2012-01-24 19:15:02

标签: c# indexing

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

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

3 个答案:

答案 0 :(得分:2)

你想要使用

transfersDGV.SelectedRows[0].Cells[0].Value

SelectedRows包含当前所选行的集合。如果选择1,则它包含该行。如果选择10,它将包含那些10.

您需要检查是否有任何行被选中然后取第一个(或者您需要的任何一行)来获取第一个单元格的值。< / p>

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

答案 1 :(得分:0)

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

  

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

你应该使用

(int)transfersDGV.SelectedRows[0].Cells[0].Value;

答案 2 :(得分:0)

我不能肯定地说不知道你在代码中使用了什么类型...... transfersDGV是某种迭代器吗?一旦迭代遍历整个集合,一些迭代器指向集合的结束或结束。另一种选择是它需要以某种方式进行初始化。 Cells为空可能也会出现问题,在这种情况下,Cells[0]实际上会导致异常。