2012-01-10 60 views
1

我有一個例程,我循環遞歸通過窗體上的所有控件,並處理其中一些代碼。從面板中刪除控件不會將其從窗體中刪除?

根據用戶的選擇,通過使用屏幕添加和刪除控件。

我發現panel.Controls.Remove(control1)並未真正將其從表單中刪除。當我運行通過窗體上的控件遞歸循環的例程時,我認爲我已經刪除的控件仍然被找到。

它並沒有 「消失」,直到我做:

panel.Controls.Remove(control1);
this.Controls.Remove(control1)

這個預期?有人可以向我解釋這一點,或者指向我解釋Windows窗體中控制行爲的地方。

謝謝!

+0

很確定這是*不是*預期的行爲。當你說它「仍然被發現」時,你的意思是你仍然可以在屏幕上看到它嗎?你確定這個表單因爲你調用了'Remove'方法而被重新繪製(重新繪製)了嗎? – 2012-01-10 05:57:52

+0

您是否嘗試將它們放在'SuspendLayout'和'ResumeLayout'中,可能表單沒有重繪 – V4Vendetta 2012-01-10 05:59:25

+2

也不應該是'Controls.Remove'? – V4Vendetta 2012-01-10 06:08:34

回答

3

很明顯,控件的形式是其父,而不是面板。設計師很容易發生這類事故。您可以使用「查看+其他Windows +文檔佈局」來查看子父母關係的良好視圖。您可以在此列表中使用拖放操作來修復。

相關問題