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() 方法。处理您删除的控件非常重要,否则它们将永远存在并最终导致您的程序崩溃。