这部分应用程序是一个简单的“添加/删除”功能。动态添加控件的行。它的运输软件和用户正在向订单添加或删除订单项。添加行工作正常,但我现在编写删除部分并在下面遇到此问题。每个动态添加的控件以与其所属的项目行相关的唯一索引结束。所以下面的代码应该删除一行7个控件,所有控件都以相同的索引结束。但是,它只删除了大约一半,所以我将FOR EACH包含在另一个FOR循环中,以便按下控件4次,现在它可以工作了!?!?每次我增加父循环以再次击中控件时,它会移除更多,直到幻数4将它们全部删除。可能导致这种情况的原因是什么?
For p As Integer = 1 To 4
For Each c As Control In grpVehicles.Controls
If c.Name.EndsWith(removeIndexClicked) Then
grpVehicles.Controls.Remove(c)
End If
Next
Next
答案 0 :(得分:-3)
在枚举该列表时,即在For Each
循环中,您不会从列表中删除项目。您可以使用For
循环并向后工作,例如
For i = myList.Count - 1 To 0 Step -1
myList.RemoveAt(i)
Next
或者您创建第二个列表并枚举,例如
For Each item In myList.Where(Function(o) SomeContion(o)).ToArray()
myList.Remove(item)
Next