对于每个控件不返回所有控件

时间:2015-12-14 03:36:03

标签: .net vb.net visual-studio-2013

这部分应用程序是一个简单的“添加/删除”功能。动态添加控件的行。它的运输软件和用户正在向订单添加或删除订单项。添加行工作正常,但我现在编写删除部分并在下面遇到此问题。每个动态添加的控件以与其所属的项目行相关的唯一索引结束。所以下面的代码应该删除一行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

1 个答案:

答案 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