[英]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
事件!)
请注意,无论您创建了多少Columns
, ListView
中的每个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.