1

コントロールがいっぱいのフォームがあり、他のコントロールを入れる余地がありません。フォームの下部には、いくつかのコントロールを備えたパネルがあります。

私の目標は、特定のボタンをクリックすると、下部の元のパネルが、プログラムの開始前に作成できるコントロールを含む別のパネルに置き換えられることです。つまり、パネル内のこれらのコントロールを動的に作成する必要はありません。置換アクションは、各パネルの可視フィールドを一致する値に設定することによって実行されます。

私はこれを行う 2 つの方法を考えました - 新しいパネル (およびそのコントロール) を動的に作成し、元のパネルではなくフォームに追加するか、別のフォームで新しいパネルを作成し、関連するボタンがクリックされたときにパネルが表示されるようにします。そのフォームから取得され、必要なフォームに追加されます (新しいフォームのインスタンスを作成し、そのパネルの修飾子をパブリックにすることによって)。「サイド フォーム」の目的はそのパネルを作成することだけであり、独自の機能はありません。

新しいパネルを動的に作成する利点:

  • ゼロ機能フォームを作成する必要はありません。

サイド フォームで新しいパネルを作成する利点:

  • 新しいパネルに追加されたコントロールとその位置は非常に明確です。
  • 新しいパネルでコントロールの位置やその他のフィールドを設定するのは非常に簡単です。

どちらの方法が良いですか?

ありがとう!

4

2 に答える 2

1

IMOの最善の方法は、この目的のためにユーザーコントロールを利用することです。表示/非表示にするパネルごとに1つのユーザーコントロールを作成し、コントロールを内部に配置するだけです。このようにして、デザイナーと必要な「追加のフォーム」の両方を使用できます。

于 2012-07-20T10:31:59.473 に答える
1

TabControl を検討しましたか? それはあなたのニーズにぴったりのようです。私が考えることができる他のコントロールは、StackPanel (Windows フォームでかなり簡単に実行できます) または OutlookBar のようなコントロール (これもユーザー コントロール) です。

最も簡単で迅速な方法は TabControl のようです。

編集:

  1. SideForm は別の Windows フォームだと思います。したがって、コントロールを公開して可視性などを変更することを考えている場合は、しないでください。デリゲートを使用して、MainForm で SideForm のイベントを処理します。
  2. おっしゃったように、これ以上コントロールを追加する余地はありません。1 つだけではなく、より多くの画面をお勧めします。私はあなたの現在のUIデザインと機能についてあまり知らないので、あなた次第です.

コントロールを非表示にして、Visibility をいじるだけでも問題ないと思います。これは、実行時のコントロールの配置、固定、およびドッキングについて心配する必要がないことを意味します。問題は、フォームのロードである可能性があります。大量のデータが関連付けられた膨大な数のコントロールがあると、処理が遅くなる可能性があります。

于 2012-07-20T10:34:49.153 に答える