【问题标题】:ArgumentOutOfRangeException was Unhandled C# errorArgumentOutOfRangeException 是未处理的 C# 错误
【发布时间】:2014-04-08 02:10:58
【问题描述】:

InvalidArgument=“4”的值对“索引”无效。 参数名称:索引

这是我的代码

   if (lvnames.Items.Count > 0)
   {
         for (int x = 0; x < lvScratch.Items.Count; x++)
         {
           **lvnames.Items[x].SubItems[4].Text = lvnamestemp.Items[x].SubItems[0].Text;**
         }
   }
   else
   {

            MessageBox.Show("No Record", "Empty", MessageBoxButtons.OK, MessageBoxIcon.Information);

   }

我的 lvnames.Items 有 4 列 我的 lvnamestemp 有 3 列

当我运行代码时,我在粗体代码上收到错误 InvalidArgument=Value of '4'

【问题讨论】:

  • 你的代码一开始是这样的吗?我编辑了它并改变了你的括号位置,对不起。
  • 尝试使用索引0而不是4,如果没有错误,则表示4超出范围。
  • 添加一个空白列并使用 4(可能吗?)这通常是我解决编程问题 Xb 的愚蠢方式
  • 我已经在我的 lvnames 上添加了 5 列,但仍然是同样的错误......我知道这对于简单的编程问题来说听起来很疯狂,但我无法弄清楚,我需要一些想法。感谢您的帮助

标签: c# exception invalid-argument


【解决方案1】:

“我的 lvnames.Items 有 4 列”

但您正在使用此代码访问第 5 列:

lvnames.Items[x].SubItems[4]

0 1 2 3 4(4是第五项)。

【讨论】:

  • 很好,我不知道。 @OP 索引从 0 开始计数
  • 如果您有 1 列,则索引为 0。如果您有两列,则索引从 0 到 1。如果您有三列,则索引为 0、1、2 等。跨度>
【解决方案2】:

在 .NET 中,几乎所有数组和集合都是从零开始的。 ListView 中的实际列数与 ListViewItem 中的子项数无关;重要的是您添加的子项的数量。通常它们是相同的。如果您有四列,那么您可能添加了四个子项,因此它们将位于索引 0、1、2 和 3。那么显然 4 不是有效索引。

【讨论】:

  • 谁在乎你的 C++?你的 C# 怎么样? ;-) 正如我所说,ListView 中有多少列并不重要。 ListViewItemSubItems 集合与此无关。重要的是您添加的子项的数量。请注意,项目本身是它自己的第一个子项目。如果索引 4 无效,则意味着您已向该项目添加了三个或更少的子项目。如果要访问索引 4 处的子项,则必须添加一个,即您必须向该项中添加至少四个子项。
  • 同一件事我可以说多少次?您添加到 ListView 的列数是 IRRELEVANT!重要的是您添加到该项目的子项目的数量。如果需要,您可以向 ListView 添加一百列,但如果您只向项目添加两个子项,那么您将只有索引 0、1 和 2 处的子项。您没有向项目添加足够的子项。就是这么简单。 停止考虑 ListView 中的列数,因为它与您的问题绝对没有有关。
猜你喜欢
  • 2012-11-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-24
  • 2023-02-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多