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?