所以我的应用程序使用单一主表单,并在表单左侧显示一个菜单。
在右侧,我有panel
作为我创建的任何UserControl
的占位符。
每次菜单项上的用户clicks
,相关的UserControl
都会使用以下代码显示:
//Display UserControl first
ucMyUserControl uc = new ucMyUserControl ();
uc.Dock = DockStyle.Fill;
pnlContainer.Controls.Add(uc);
是否有更好的方法,只需复制并粘贴每个按钮或每当我想显示UserControl
时。我应该创建一个每次调用的函数,只是传递我想要使用的UserControl
的名称吗?
也许我首先用我使用它的方式弄错了 - 我是这个概念的新手,只是尝试一下。
答案 0 :(得分:3)
当然,不要重复自己。使用辅助方法编写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()方法。处置您删除的控件非常重要,如果不这样,那么它们将永远存在并最终导致程序崩溃。