【问题标题】:C# ArgumentOutOfRangeException in dataGridView数据网格视图中的 C# ArgumentOutOfRangeException
【发布时间】:2016-05-18 08:57:51
【问题描述】:

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

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

根据我的研究,ArgumentOutOfRangeException 超出范围时会抛出。

从上面的代码中,rowcount 是 11,columncount 是 7。

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

但同样,当我为 SelectedRows 输入 0 而不是 1 时,它工作正常。其余的都不起作用。

我觉得我做的一切都是对的。有人可以帮助这个初学者吗?感谢您的阅读:)

【问题讨论】:

  • 选择了多少行,可能你只选择了索引为 0 的行

标签: c# winforms exception


【解决方案1】:

原因是SelectedRowsRows 不同。 SelectedRows 是您选择的行,Rows 代表您在 dataGridView1 中的所有 Rows

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

如果您将代码更改为使用 Rows

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

然后你可以得到RowsCells中的值,索引分别与RowCount - 1ColumnCount - 1一样高。

【讨论】:

  • 感谢您的回答!那时我只是引用了错误的值。当网站允许时,我会在 5 分钟内接受答案。再次感谢你:)
【解决方案2】:

好吧,索引是从零开始的,这意味着如果您选择 ONE 行,则实际选择的行位于索引 0。您在上面的代码中尝试做的是引用选择。如果只选择了一行,则会失败。

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

【讨论】:

  • 感谢您的解释!我只是没有正确理解我猜 SelectedRows 的价值是什么。感谢您的关注先生:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-14
  • 1970-01-01
  • 1970-01-01
  • 2021-02-17
  • 1970-01-01
相关资源
最近更新 更多