フォームと複数のコントロールがあります。
単一のフォームがあり、いくつかのコントロールが含まれている必要があるとします。
単一のフォームで作業し、いくつかのユースケースに応じてコントロールを追加および削除しようとしています。
たとえば、これは私のフォームクラスのサンプルコードです。
private void AddToControlPanel(UserControl control)
{
this.panelControl.Controls.Add(control);
this.panelControl.Tag = control;
this.panelControl.Size = control.Size;
this.panelControl.Dock = DockStyle.Fill;
control.Show();
}
上記のサンプルは、いくつかのパネルにコントロールを追加し、それを示しています。
問題は、他のコントロールを追加して現在のコントロールを削除することができないことです。たとえば、一部のログインコントロールが正常に認証された場合、ログインコントロール自体を削除し、検索ボックスコントロールのように他のログインコントロールを表示します。
どうすればそれを達成できますか?
これは私がこれまでに試したことです:
if (LoginOK)
{
//Add the next Control I want to load
this.ParentForm.Controls.Add(new CtlPedirDevolucion());
//Remove this actual control
this.ParentForm.Controls.Remove(this);
}
...後で、イベントハンドラーを使用して最新の追加コントロールを表示します。
private void FirstForm_ControlRemoved(object sender, ControlEventArgs e)
{
this.Controls[this.Controls.Count - 1].Show();
}
しかし、これは私にはうまくいきません。さらに、私は自分のアプローチが好きではありません。
これを達成するためのより良い方法を教えていただけますか?