我想要刪除不包含「mysite」的列表框中的所有項目,並且這裏是我的代碼工作正常,但沒有backgroundworker。使用backgroundworker從列表框中刪除項目
做工作事件:
Dim relevantSite As Integer = 0
Do Until relevantSite = lstLinks.Items.Count
If lstLinks.Items.Item(relevantSite).ToString.Contains("mysite") Then
relevantSite += 1
Else
bgWorker.ReportProgress(relevantSite)
End If
Loop
ProgressChanged事件:
lstLinks.Items.RemoveAt(CInt(e.ProgressPercentage))
它是什麼,它消除了很多項目,有時所有項目。我知道我在用e
和reportProgress
這個東西犯了一些可怕的錯誤。
請他們向我解釋,我搜索各個網站,但無法理解......
你的許多項目如何包含字符串「mysite的」。如果有很多,那麼你的代碼工作正常。請指教。還要注意ReportProgress的第一個參數是操作進度的一個指示。第二個參數UserState是您應該用來傳遞索引的值。 – Ric 2013-05-10 15:21:18
你爲什麼使用後臺工作者?我看不到它在這裏增加任何價值,因爲進度改變事件比DoWork要重得多。有沒有額外的處理,你沒有顯示?你不能只在初始加載中過濾網站嗎? – PatFromCanada 2013-05-10 16:43:28
您希望ProgressChanged事件處理程序在您調用ReportProgress時運行。它不會,它會在稍後運行。確實搞砸了listview。不要使用工人代碼這樣。 – 2013-05-10 20:42:06