0

には、階層構造のオブジェクトのセットを表すTreeViewコントロールがあります。WinForm各オブジェクトには、あるクラスのオブジェクトのセットがあります。選択したノードDataGridViewに関連付けられたオブジェクトを表すがあります。TreeViewの をダブルクリックすると、選択DataRowした に関連付けられたオブジェクトの詳細な値 (あるクラスのオブジェクトのコレクション) を表すnew がDataGridView追加TabControl1されます。の をダブルクリックすると、ダブルクリックされたに関連付けられたオブジェクトの詳細な値 (あるクラスのオブジェクトのコレクション) を表すnewが追加されます。次に、ナビゲートできますTabPageDataGridViewDataRowDataRowTabControl1TabControl2TabPageDataGridViewDataRowTreeView詳細情報を表示し、DataRows をダブルクリックして新しい TabPages を作成します。ここで、TreeNodeからを削除するときにTreeView、その に関連付けられているすべての TabPages (DataGridViews を含む) を削除する必要がありますTreeNode

関連するコントロールの集中的な作成および削除チェーンの設計パターンはありますか?

フォームモデル

4

1 に答える 1

1

DataGridView1、TabControl1、および TablControl2 が常にフォームに存在する場合 (Panels に設定された個別の UserControls とは対照的に)、TreeView の BeforeSelect イベントにメソッドを追加します。イベントでは、メソッドを呼び出して、他の各コントロールのデータをクリアします。UserControls ルートに進む場合は、ClearData メソッドを使用してインターフェイスを作成し、各コントロールをステップ ダウンすることをお勧めします。

これらの各メソッドで、DataGridView またはタブが存在するかどうかを確認し (ユーザーがまだ TabControl2 にアクセスしていない可能性があるため)、親コントロールからそれらを削除します。

これはパターンではありませんが、うまくいくはずです。詳細が必要な場合、または何か不足している場合は、抽象的ではないことが役立ちます。

各ステップはユーザー入力に依存するため、すべてを一元的にロードするパターンはないと思います。

于 2012-07-18T19:22:41.097 に答える