【问题标题】:InvalidArgument=Value of '6' is not valid for index. Parameter name: indexInvalidArgument=“6”的值对索引无效。参数名称:索引
【发布时间】:2011-10-24 03:46:32
【问题描述】:

我创建了一个包含 8 列的 Listview 控件。当我需要从 Item 的子项中检索文本时,我使用以下代码:

foreach (ListViewItem item in listViewStatus.Items)
            {
                if (item.Tag == f)
                {
                    /* Use locking to synchronise across mutilple thread calls. */
                    lock (_lockObject)
                    {
                        item.SubItems[6].Text = Status;
                    }
                    break;
                }
            }

它显示一个异常。但是当我用 item.SubItems[5].Text 替换 item.SubItems[6].Text 时,它可以工作。我该如何解决这个问题?

【问题讨论】:

  • 查看item.SubItems有多少次?也许是 item.SubItems.Count()?
  • 它显示 6。但我有 8 列
  • 哦。当我创建子项时,我只创建 6 个。:D
  • 您是否通过 listView.SubItems.Add() 填写了所有带有子项的列?
  • 我不确定您的问题,但如果这是 WPF 或 Winforms(看起来确实如此),那么首先不应该有多个线程访问您的列表视图。 WPF 和 Winforms 的基本原则是只有创建者线程才能访问控件。这很可能也与您的问题有关。

标签: c# winforms listview


【解决方案1】:

显然你在 SubItems 中最多有 6 列

【讨论】:

    【解决方案2】:

    如果您只创建了 6 个,则值为 0-5;表示 6 无效。

    【讨论】:

      【解决方案3】:

      这是典型的“一对一”错误场景。

      指数有两种形式:从零开始和从一开始。 C# 是一种从零开始的索引语言。我假设您是第一次学习语言,或者是第一次学习从零开始的语言-否则,我错过了问题的重点,我深表歉意。 :)

      参见 Wikipedia,Off-By-One 错误:http://en.wikipedia.org/wiki/Off-by-one_error

      当运行时意识到列表中没有第 7 项时,会引发 ArgumentOutOfRange 异常。由于列表可能随时包含任意数量的值,因此无法在编译时捕获此类错误(不使用启发式算法)

      TLRD;

      从零开始 (C#):

      ... = myList[0]; // This is a zero-based indexer.
      ... = myList[1];
      ... = myList[2];
      ... = myList[3];
      ... = myList[4];
      ... = myList[5]; // This is the 6th item, although the index is 5.
      

      One-Based(一些其他语言):

      ... = myList[1]; // This is a one-based indexer.
      ... = myList[2];
      ... = myList[3];
      ... = myList[4];
      ... = myList[5];
      ... = myList[6]; // This is the 6th item, and the index is 6.
      

      【讨论】:

        【解决方案4】:
        SubItems[6]
        

        6那里代表列索引而不是行索引。

        【讨论】:

          猜你喜欢
          • 2013-03-07
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-03-19
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多