多数のコンポーネントを必要とするフォームを設計する場合、必要な結果を得るために使用できるさまざまな方法があります。いくつかの可能性を見てみると…
方法 1: 構成ごとに個別のフォームを作成する
ユーザーが選択を行った後、目的のフォームの新しいインスタンスを作成できるため、これは悪い考えではありませんが、個々のフォームをすべて設定するには時間がかかりますが、難しくはありません。
方法 2: 構成ごとに複数のパネルを作成する
これは、最初にすべてのパネルを非表示にしてから、ユーザーが選択したパネルを表示することを除いて、方法 1 と同様に機能します。事前にパネルを作成して非表示または表示するか、実行時にプログラムで行うことができます。(プログラムを使用せずにパネルを作成する場合、私の意見では、コンポーネントでいっぱいの多数のパネルを非表示にするのは適切ではありません)
方法 3; 必要なコンポーネントをプログラムで作成する
ユーザーの選択に基づいて目的のコンポーネントを生成するコードを作成するだけです。
例:
if(comboBox1.SelectedIndex == 0)
{
ComboBox selection1 = new ComoboBox();
selection1.Location = new Point(XXX,YYY); //Set location
//You can add the events for the combobox, set up the properties
form1.Controls.Add(selection1); //Add the component to the form or panel that you want it displayed on
//Write code to dynamically create next object(s)....
}
else if (comboBox1.SelectedIndex == 1)
{
//Programmatically create components for selection2
}
これらのうち、フォームにコンポーネントを配置するだけなので方法 1 が最も簡単だと思いますが、これには時間がかかります。私の意見では、コードをさまざまな可能性に合わせて適切に整理し、処理するフォームやパネルが多数ない限り、プログラムによる方法がおそらく最もエレガントです。コンポーネントをいじるだけです。ただし、プログラムでプロパティを割り当てるコンポーネントを作成する場合、同様に時間がかかる場合があります。
これを行うための最も正式なアプローチが何であるかについて 100% 確信があるわけではありませんが、これらはほんの一部のアイデアです。
お役に立てれば。