簡體   English   中英

在VB.Net ASP.Net Webform中的多選列表框上獲取錯誤

[英]Getting error on multiselect ListBox in VB.Net ASP.Net Webform

我有一個具有兩個多選列表框和一個按鈕的Web窗體。 按鈕在檢查重復項的同時將選定的項目從一個列表框移動到另一個列表框。 不幸的是,在lstEmployees.Items(i).Selected的循環的最后一次迭代中,我遇到了超出范圍的異常。

我意識到發生了什么事,當我刪除一個項目(lstEmployees.Items.Remove(li))時,它會更改計數,然后最終引發錯誤。 有什么辦法可以糾正這種情況?

If Not lstEmployees.SelectedItem Is Nothing Then
    For i As Integer = 0 To lstEmployees.Items.Count - 1
        If lstEmployees.Items(i).Selected = True Then
             li.Text = lstEmployees.Items(i).Text
             li.Value = lstEmployees.Items(i).Value
             If Not lstSelected.Items.Contains(li) Then
                  lstEmployees.Items.Remove(li)
                  lstSelected.Items.Add(li)
             End If
         End If
     Next
End If

當您遍歷一個項目集合並從該集合中刪除項目時,該集合中的項目計數會發生變化,並且退出for循環的檢查將失敗(不考慮在刪除項目時(例如在索引5處))位於索引6的位置滑到了第五位,而您跳過了該元素)

解決方法很簡單。 以相反的順序循環

If Not lstEmployees.SelectedItem Is Nothing Then
    For i As Integer = lstEmployees.Items.Count - 1 To 0 Step -1
       ....
    Next
End If

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM