[英]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.