VB.Net ASP.Net Webform 中的多选列表框出错
Getting error on multiselect ListBox in VB.Net ASP.Net Webform
我有一个包含两个多选列表框和一个按钮的网络表单。该按钮将所选项目从一个 ListBox 移动到另一个,同时检查重复项。不幸的是,我在 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 的项目滑到第 5 个位置,您跳过该元素)
修复很简单。倒序循环
If Not lstEmployees.SelectedItem Is Nothing Then
For i As Integer = lstEmployees.Items.Count - 1 To 0 Step -1
....
Next
End If
我有一个包含两个多选列表框和一个按钮的网络表单。该按钮将所选项目从一个 ListBox 移动到另一个,同时检查重复项。不幸的是,我在 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 的项目滑到第 5 个位置,您跳过该元素)
修复很简单。倒序循环
If Not lstEmployees.SelectedItem Is Nothing Then
For i As Integer = lstEmployees.Items.Count - 1 To 0 Step -1
....
Next
End If