C# 多个Windows窗体中的公共元素-编写一次

C# 多个Windows窗体中的公共元素-编写一次,c#,winforms,panel,mdi,C#,Winforms,Panel,Mdi,我是一名web开发人员,对Windows窗体有一些基本经验 我需要创建一个Windows应用程序,使用一个包含大量页面的表单-我需要能够多次更改表单中100%的内容(无弹出窗口)。我希望主导航元素是左侧的一列按钮。这些按钮应更改表单的其余部分 从我所做的搜索来看,MDI似乎接近我想要的解决方案 使用MDI的问题:我不希望文件编辑窗口位于顶部 最重要的部分:这里有一个大型的、复杂的面板,上面有很多控件,我想在这个表单中的几个页面上显示这些控件。我想写一次面板,但在多个页面上显示它,并从每个页面填充

我是一名web开发人员,对Windows窗体有一些基本经验

我需要创建一个Windows应用程序,使用一个包含大量页面的表单-我需要能够多次更改表单中100%的内容(无弹出窗口)。我希望主导航元素是左侧的一列按钮。这些按钮应更改表单的其余部分

从我所做的搜索来看,MDI似乎接近我想要的解决方案

使用MDI的问题:我不希望文件编辑窗口位于顶部

最重要的部分:这里有一个大型的、复杂的面板,上面有很多控件,我想在这个表单中的几个页面上显示这些控件。我想写一次面板,但在多个页面上显示它,并从每个页面填充它


有人能告诉我一个好的模板或模式吗?我用MDI走错路了吗?

我认为MDI不是你想要的。MDI确实适用于需要同时显示和排列多个窗口的应用程序。即使在这些情况下,我也不太喜欢它(我认为带有可固定工具窗口的VisualStudio模型更适合使用)

我会这样做:

  • 对页面使用
    选项卡控件
    。这将为您提供免费的按钮、事件和页面的可视指示器

    (如果您出于任何原因不喜欢
    选项卡控件
    ,则为每个页面定义一个
    面板
    (或
    选项卡控件
    和)。然后,使用按键隐藏/显示页面。)

  • 将可重用面板创建为
    用户控件
    (请参阅)。然后,您可以在需要时添加该
    UserControl
    的实例,并相应地设置属性。您还应该查找对控件的每个实例执行的常见任务,并将这些任务的代码放在控件本身中


MDI不需要菜单。无关:winforms是一种非常古老的技术,不建议用于任何新项目,仅用于维护遗留应用程序。如果您有Web开发经验,那么使用WPF而不是winforms会让您感觉更“自在”。WPF(XAML+数据绑定)范式比传统的、过程性的、太多代码的winforms方法更接近Web范式。更不用说
样式
模板
和其他与XAML相关的概念,它们与Web开发中看到的非常相似,并且没有winforms等价物。正如您所看到的,使用几行XAML很容易实现,但是在winforms中实现同样的目标需要大量可怕的黑客。我是唯一一个认为XAML真的很恶心的人吗???@jnylen与winforms相比,它是世界上最好的东西。winforms不支持任何东西,完全没有用处。我甚至会说-TabControl,而不是隐藏选项卡,因为这给了OP“导航按钮列”,我同意。。。毕竟,这就是
TabControl
s的用途。不过,他可能不喜欢内置标签的外观。