Winforms 添加和删除用户控件
Winforms Adding and remove UserControls
所以我有一个使用单一主表单的应用程序,表单左侧有一个菜单。
在右侧我有一个 panel
作为我创建的任何 UserControl
的占位符。
每次用户 clicks
在菜单项上时,相关的 UserControl
将使用如下代码显示:
//Display UserControl first
ucMyUserControl uc = new ucMyUserControl ();
uc.Dock = DockStyle.Fill;
pnlContainer.Controls.Add(uc);
有没有比为每个按钮或每当我想显示 UserControl
时复制和粘贴更好的方法。我是否应该创建一个函数来每次调用并只传递我想使用的 UserControl
的名称?
也许我一开始就完全弄错了我使用它的方式 - 我是这个概念的新手,只是尝试一下。
当然,不要重复你自己。使用辅助方法编写 DRY 代码。它可能看起来像这样:
public void ShowPage(UserControl uc) {
while (pnlContainer.Controls.Count > 0) pnlContainer.Controls[0].Dispose();
uc.Dock = DockStyle.Fill;
pnlContainer.Controls.Add(uc);
}
现在您只需调用 ShowPage(new ucMyUserControl());
请注意,看起来古怪的 while 循环很重要,您不只是想使用 Controls.Remove() 方法。处理您删除的控件非常重要,否则它们将永远存在并最终导致您的程序崩溃。
所以我有一个使用单一主表单的应用程序,表单左侧有一个菜单。
在右侧我有一个 panel
作为我创建的任何 UserControl
的占位符。
每次用户 clicks
在菜单项上时,相关的 UserControl
将使用如下代码显示:
//Display UserControl first
ucMyUserControl uc = new ucMyUserControl ();
uc.Dock = DockStyle.Fill;
pnlContainer.Controls.Add(uc);
有没有比为每个按钮或每当我想显示 UserControl
时复制和粘贴更好的方法。我是否应该创建一个函数来每次调用并只传递我想使用的 UserControl
的名称?
也许我一开始就完全弄错了我使用它的方式 - 我是这个概念的新手,只是尝试一下。
当然,不要重复你自己。使用辅助方法编写 DRY 代码。它可能看起来像这样:
public void ShowPage(UserControl uc) {
while (pnlContainer.Controls.Count > 0) pnlContainer.Controls[0].Dispose();
uc.Dock = DockStyle.Fill;
pnlContainer.Controls.Add(uc);
}
现在您只需调用 ShowPage(new ucMyUserControl());
请注意,看起来古怪的 while 循环很重要,您不只是想使用 Controls.Remove() 方法。处理您删除的控件非常重要,否则它们将永远存在并最终导致您的程序崩溃。