VB.NET Durchschleifen von Steuerelementen in einem Bedienfeld überspringt Steuerelemente

Eine schnelle Unterroutine in einer Klasse geschrieben, um Steuerelemente von einer zu verschiebenPanel zu einem anderen in VB.NET, was einfach genug schien:

Public Sub Move(ByRef OldPanel As System.Windows.Forms.Panel)
    Dim panelControl As System.Windows.Forms.Control
    For Each panelControl In OldPanel.Controls
        MessageBox.Show(panelControl.Name) 'Debugging
        OldPanel.Controls.Remove(panelControl) 'Fairly certain this line makes no difference
        NewPanel.Controls.Add(panelControl)
    Next
End Sub

Das Problem ist, es bewegt sich nur etwa die Hälfte der Kontrollen. Die anderen Felder werden von der Schleife überhaupt nicht erfasst und bleiben gebundenOldPanel. Ich habe überprüft, dass die Kontrollen definitiv Teil der sindOldPanel (Und nicht nur optisch darüber geschwebt).

Wenn sich beispielsweise 6 Steuerelemente auf dem Bedienfeld befinden,MessageBox.Show(panelControl.Name) Es werden nur 3 von ihnen zurückgespeist, und nur diese 3 Steuerelemente bewegen sich. Das ist ... verblüffend.

Ich habe eine ähnliche Debugging-Schleife innerhalb der Formularklasse geschrieben_Load Das Ereignis selbst und dies nimmt alle 6 Steuerelemente auf dem Bedienfeld richtig auf:

Dim panelControl As System.Windows.Forms.Control
For Each panelControl In Me.Panel1.Controls
    MessageBox.Show(panelControl.name)
Next

Irgendwelche Ideen?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage