VB.NET Проход по элементам управления на панели пропускает элементы управления
Написана быстрая подпрограмма в классе для перемещения элементов управления из одногоPanel
другому в VB.NET, который казался достаточно простым:
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
Проблема в том, что он перемещает только половину элементов управления. Другие панели вообще не воспринимаются петлей и остаются связанными сOldPanel
, Я убедился, что элементы управления, безусловно, являются частьюOldPanel
(а не просто визуально всплывало над ним).
Например, если на панели 6 элементов управления,MessageBox.Show(panelControl.Name)
только возвращает 3 из них, и только эти 3 элемента управления двигаются. Это ... сбивает с толку.
Я написал аналогичный цикл отладки внутри класса формы_Load
само событие, и это правильно подбирает все 6 элементов управления на панели:
Dim panelControl As System.Windows.Forms.Control
For Each panelControl In Me.Panel1.Controls
MessageBox.Show(panelControl.name)
Next
Есть идеи?