2017-04-20 59 views
-1

這已經讓我煩惱了幾個小時。在我添加的每個新的ListViewItem上,我將一個名稱值與它關聯,所以它不添加兩個相同的項目。該值是一個URL,我不確定是否可能是這個問題?ListView.Items.Find拋出錯誤;對象引用未設置爲對象的實例

我得到的錯誤是:

的對象引用未設置爲一個對象的實例。

完整的錯誤描述:

System.NullReferenceException:該對象的引用不設置爲一個對象的一個​​實例。 通過System.Windows.Forms.ListView.ListViewItemCollection.FindInternal(String鍵,布爾searchAllSubItems,ListViewItemCollection listViewItems,ArrayList的foundItems) 在System.Windows.Forms.ListView.ListViewItemCollection.Find(String鍵,布爾searchAllSubItems)

這裏是我的代碼:

我在If Not ListView2.Items.Find(lv.Name, False).Count >= 1 Then

Dim m_url As String = HttpUtility.HtmlDecode(matchUrl) 
m_url = m_url.Replace(" ", "") 

If Not m_url.Contains(rootdomain) Then 

Dim lv As New ListViewItem 
lv.Name = m_url 
If Not ListView2.Items.Find(lv.Name, False).Count >= 1 Then 
lv.Text = m_url 
lv.SubItems.Add(StripTags(match.Groups(2).Value)) 
lv.SubItems.Add("") 
ListView2.Items.Add(lv) 
End If 

e_links_c += 1 
End If 

我試着不使用名稱在所有得到的錯誤,但後來我得到了一些錯誤,其中s像是已經添加了關鍵字的東西,我不知道爲什麼會出現這種情況,因爲我沒有將任何名稱值與項目相關聯。

更新代碼:

Dim lv As New ListViewItem(m_url) 
          lv.Name = m_url 
          If ListView2.Items.IndexOfKey(lv.Name) = -1 Then 
           lv.SubItems.Add(StripTags(match.Groups(2).Value)) 
           lv.SubItems.Add("") 
           ListView2.Items.Add(lv) 
          End If 

回答

0

我不知道爲什麼會拋出異常,但你可以嘗試IndexOfKey() method代替。它只會迭代直到找到一個匹配而不是很多匹配。

If ListView2.Items.IndexOfKey(lv.Name) = -1 Then '-1 = no item found. 
+0

它說-1是一個無效的參數。 – Anders

+0

@Anders:你能給我一個截圖嗎? –

+0

這是一個奇怪的人,它不再說了。請參閱上面我已經更新的代碼,但它仍然給我:System.NullReferenceException:對象引用未設置爲對象的實例 – Anders

相關問題