InvalidArgument=';的值;6';对索引无效.参数名称:index

本文关键字:参数 无效 index 的值 InvalidArgument 索引 | 更新日期: 2023-09-27 18:12:15

我创建了一个包含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;
                }
            }

它显示了一个异常。但当我更换物品时。子项[6]。带项的文本。子项[5]。文本有效。我该怎么解决这个问题?

InvalidArgument=';的值;6';对索引无效.参数名称:index

显然,在子项中最多有6列

如果只创建了6个,则值为0-5;意味着6是无效的。

这是一个典型的"逐个关闭"错误场景。

印度有两种口味:零基和一基。C#是一种基于零的索引语言。我想你要么是第一次学习一门语言,要么是第一时间学习一门零基础语言——否则,我就错过了问题的要点,我很抱歉。:(

请参阅维基百科,一个错误关闭: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.

基于一种语言(其他语言(:

... = 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.
SubItems[6]

6表示列索引,而不是行的索引。