在一個類從一個Panel
控制移動到另一個VB.NET,這似乎很簡單寫了一個快速的子程序: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
任何想法?
您正在更改集合,同時循環播放它;那是在尋求麻煩。 – 2013-05-13 11:51:07
啊哈,很好。實際上可能就是這樣。 – Kai 2013-05-13 11:53:46