我有一个表单和多个控件。
假设我有一个表单,它应该包含一些控件。
我正在尝试使用单个表单并根据某些用例添加和删除控件。
例如,这是我的表单类中的示例代码:
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();
}
但这对我不起作用。另外我不喜欢我的方法。
你会建议我一个更好的方法来实现这一点吗?