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]。文本有效。我该怎么解决这个问题?
显然,在子项中最多有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
表示列索引,而不是行的索引。