これができるかどうかはわかりませんが、インストーラーの場合と同様に、プログラムでフォームにあるコントロールを完全に変更できるかどうかを知りたいです。次のボタンをクリックしても、フォームが非表示になったり、次のフォームを閉じたり開いたりすることはありませんが、異なるコントロールのセットがわずかに読み込まれます(少なくとも、そのように表示されます)。
Visual StudioのC#でこれを行うことは可能ですか?または、タブまたは非表示のパネルを使用する必要がありますか?
これができるかどうかはわかりませんが、インストーラーの場合と同様に、プログラムでフォームにあるコントロールを完全に変更できるかどうかを知りたいです。次のボタンをクリックしても、フォームが非表示になったり、次のフォームを閉じたり開いたりすることはありませんが、異なるコントロールのセットがわずかに読み込まれます(少なくとも、そのように表示されます)。
Visual StudioのC#でこれを行うことは可能ですか?または、タブまたは非表示のパネルを使用する必要がありますか?
はい、プログラムでコントロールに対して何でもできます。使用するデザイナは、バックグラウンドでC#コードも生成します。
フォームに新しいコントロールを追加するには、Form.Controls.Add(Control c)
メソッドを使用します。Control
(Button
、、など)から継承する任意のクラスをListBox
使用できます。削除するには、のRemove
代わりにメソッドを使用しますAdd
。
あなたが探しているのはUserControlだと思います。UserControlは、他のコントロールのコンテナーとして使用できるという点でフォームのようなものです。ここでウォークスルーを見つけることができます。
前述のインストーラーまたは一般的なウィザードの場合、ステップごとに異なるUserControlを設計し、フォームの予約済み領域にそれぞれをロードできます。予約エリアはパネルにすることができます。たとえば、ウィザードのステップ番号をパラメーターとして持つメソッドを呼び出すボタンがあるとします。
UserControl _step1Control = new UcStep1Control;
UserControl _step2Control = new UcStep2Control;
private void SetStep(int stepNumber)
{
panel1.Controls.Clear();
switch(stepNumber)
{
case 1:
panel.Controls.Add(_step1Control);
break;
case 2:
panel1.Controls.Add(_step2Control);
break;
default:
break;
}
}