dataGridView中的C#ArgumentOutOfRangeException

dataGridView中的C#ArgumentOutOfRangeException,c#,winforms,exception,C#,Winforms,Exception,我在编程时遇到了这个错误,经过了一些调试和谷歌搜索过程,但是我找不到问题,我请求您的帮助 MessageBox.Show(dataGridView1.RowCount.ToString()); MessageBox.Show(dataGridView1.ColumnCount.ToString()); MessageBox.Show(dataGridView1.SelectedRows[1].Cells[5].Value.ToString());

我在编程时遇到了这个错误,经过了一些调试和谷歌搜索过程,但是我找不到问题,我请求您的帮助

        MessageBox.Show(dataGridView1.RowCount.ToString());
        MessageBox.Show(dataGridView1.ColumnCount.ToString());
        MessageBox.Show(dataGridView1.SelectedRows[1].Cells[5].Value.ToString()); //This
根据我的研究,ArgumentOutOfRangeException在超出范围时抛出

从上面的代码中,行数是11,列数是7

但是,我的第三行代码抛出ArgumentOutOfRangeException:

但同样,当我为SelectedRows设置0而不是1时,效果很好。其余的都不行


我觉得我做的每件事都是对的。有人能帮助这个初学者吗?感谢阅读:)

原因是所选的
行与
行不同
SelectedRows
是您选择的行,
rows
表示您在
dataGridView1
中拥有的所有

因此,在您的情况下,尽管您的
dataGridView1
有11行,但如果只选择了两行,则无法使用索引
2
获得
SelectedRows

如果将代码改为使用

MessageBox.Show(dataGridView1.Rows[1].Cells[5].Value.ToString()); //This

然后你可以得到
单元格
中的值,索引分别高达
行数-1
列数-1

那么,索引是零基的,这意味着如果你选择一行,实际选择的行的索引是0。在上面的代码中,您试图做的是引用选择中的“第二”行。如果只选择一行,则此操作将失败

Index     Line     Data field   
0         1       Some more data
1         2       Bouncy Castle

选择了多少行,可能您只选择了索引为0的行谢谢您的回答!当时我只是引用了错误的值。我会在网站允许的5分钟内接受答案。再次感谢:)谢谢你的解释!我只是没有正确理解SelectedRows的价值。感谢您的关注,先生:)