VB.NET“For Each”循环不能按预期工作

时间:2013-05-02 00:05:42

标签: vb.net

使用VB.NET 2010 / WinForms

我有一个名为“Panel1”的面板,该面板内有3个按钮。在表单的加载事件中,我正在创建一个小红色方块,并希望将红色方块放在3个按钮中的每一个...

    Dim RedSquare As New Panel
    With RedSquare
        .Top = 0
        .Left = 0
        .Width = 10
        .Height = 10
        .BackColor = Color.Red
    End With

    For Each Control As Control In Panel1.Controls
        If TypeOf Control Is Button Then
            Control.Controls.Add(RedSquare)
        End If
    Next

但小红色方块只出现在第一个按钮内。

我做错了什么?

1 个答案:

答案 0 :(得分:4)

控件只能有一个父级,因此当您将其添加到第二个按钮时,它将从第一个按钮中删除。如果你想在每个按钮上都有一个红色方块,你需要每次都创建一个新的

For Each Control As Control In Panel1.Controls
    If TypeOf Control Is Button Then
        Dim RedSquare As New Panel
        With RedSquare
            .Top = 0
            .Left = 0
            .Width = 10
            .Height = 10
            .BackColor = Color.Red
        End With
        Control.Controls.Add(RedSquare)
    End If
Next