2012-01-10 21 views
1

私は、フォーム上のすべてのコントロールを再帰的にループし、それらのいくつかのコードを処理するルーチンを持っています。パネルからコントロールを削除しても、フォームから削除されませんか?

私は、ユーザーの選択に応じて画面を使用してコントロールを追加したり削除したりします。

私は、panel.Controls.Remove(control1)が実際にフォームからそれを削除していないことがわかりました。フォーム上のコントロールを再帰的にループするルーチンを実行するとき、私が削除したと思ったコントロールはまだ見つかっています。

私がやったまでは "消える" しませんでした:

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

を、これは予想されていますか?誰かが私にこのことを説明したり、Windowsフォームのコントロール動作を説明するどこかに私を指摘できますか?

ありがとうございます!

+0

これは期待された動作ではありません。それが「まだ見つかっています」と言っても、まだ画面上で見ることができますか? 'Remove'メソッドを呼び出してからフォームが再描画(再描画)されたことは確かですか? –

+0

'SuspendLayout'と' ResumeLayout'にそれらを囲んでみましたか?フォームが再描画されなかったかもしれません – V4Vendetta

+2

また、 'Controls.Remove'であってはいけませんか? – V4Vendetta

答えて

3

明らかに、コントロールはパネルではなく親としてフォームを持っています。この種の事故は、デザイナーが容易に起こる傾向があります。 View + Other Windows + Document Layoutを使用すると、子 - 親関係を適切に表示できます。このリストでドラッグ&ドロップを使って修正することができます。

関連する問題