繁体   English   中英

listview-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";

您可能在每个项目中都没有所有这些SubItem。

还是什么都没选? (请注意,当未选择 Item也会调用SelectionChanged事件!)

请注意,无论您创建了多少ColumnsListView中的每个Item都可以拥有自己SubItems 数量 这些仅提供显示数据的空间,而不提供无需创建SubItems即可访问的插槽!

因此,在访问它之前必须先对其进行测试! 换句话说: ListView结构不是2d数组,而是锯齿状的数组

这可能是一个检查..:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM