列表视图- System.ArgumentOutOfRangeException

listview- System.ArgumentOutOfRangeException

我有一个包含 7 列的列表视图。我想在每一列上添加信息,但是当它从 listView 到达子项 2 时,我得到一个 System.ArgumentOutOfRangeException,即使我有那个子项。

知道为什么会出现此错误吗?我试图搜索它,但没有找到类似的案例。 这是我收到该错误的代码部分:

if (seen == true)
            listView1.SelectedItems[0].SubItems[2].Tag = "Seen";
        else
            listView1.SelectedItems[0].SubItems[2].Tag = "Not Seen";

您可能在 每个 项目中没有 所有 那些子项目。

或者什么都没有选择? (注意 SelectionChanged 事件在 Item 未选择 时被调用!)

请注意,ListView 中的每个 Item 都可以有 自己的 子项 数量 ,无论您创建了多少个 Columns。这些只提供 space 到 显示 数据,而不是您可以在不创建 SubItems !

的情况下访问的插槽

所以访问前一定要测试一下!换句话说:ListView 结构 不是二维数组而是锯齿状数组!

这可能是一个可能的检查..:[=​​21=]

if ( listView1.SelectedItems[0].Count > 0 &&     
     listView1.SelectedItems[0].SubItems.Count > 2 )
   listView1.SelectedItems[0].SubItems[2].Tag = seen ?  "Seen" :  "Not Seen";

..但是您更了解您的代码,并且很可能会找到一种更好的方法来进行必要的测试..

只是不要依赖 SubItems 的数量等于 Columns 的数量。它们根本没有关系,其中一个可能在每个 Item!

中更大