【问题标题】:Master Forms in windows formwindows窗体中的主窗体
【发布时间】:2010-10-18 12:43:29
【问题描述】:

像 ASP.NET 中的母版页一样,我们是否对 Windows 窗体应用程序有任何类似的概念。这样我就不必在整个应用程序中多次重复表单的同一部分(页眉和页脚)。

【问题讨论】:

    标签: windows winforms forms


    【解决方案1】:

    与母版页并不完全相同,但您可以创建一个带有页眉和页脚的控件(例如基于 UserControl),您的所有其他表单都可以根据需要继承(或构造)。

    【讨论】:

      【解决方案2】:

      是的。

      您需要做的是创建您的“主”表单,添加您想要的所有 UI、默认按钮等。

      对于按钮之类的东西,我通常将处理 Click 事件的方法创建为“虚拟”,以便我可以在我正在构建的实际形式中实现它们。

      一旦“主”表单构建完成,您需要做的是右键单击项目并选择“新建项目”。完成此操作后,如果您使用的是 VS.Net 2008,则可以单击“Windows 窗体”类别,然后选择“继承的窗体”。

      完成此操作后,系统会要求您从项目中的哪个表单继承。只需选择“主”表单,您就应该设置好了。

      【讨论】:

        【解决方案3】:

        将主表单创建为带有页眉和页脚的表单,但中间留空。

        将“内页”实现为具有通用界面的UserControl,并根据需要进行更改。 (Header、Contentpanel 和 Footer 是 Windows.Form.Panel)。

        -------------------------------
        | Header                      |
        -------------------------------         ______________
        |                             |         |            |
        |         ContentPanel        |   <---- | MonkeyEdit |
        |                             |         |____________|
        -------------------------------
        | Footer                      |
        -------------------------------
        

        并将内容实现为

        public class MonkeyEdit : UserControl, IContent
        {
        
        }
        

        实现一个接口是有用的,但不是必需的。之后,根据事件/配置,只需使用 Dock.Fill 将 MonkeyEdit 加载到 ContentPanel 中。正如您在另一篇文章中看到的那样,您也可以继承“主表单”。

        【讨论】:

          【解决方案4】:

          您可以通过继承实现类似的功能;您创建一些带有重复控件的父表单,然后将这个父表单用于您需要的每个自定义表单。

          【讨论】:

            【解决方案5】:

            添加一个继承自Form的类,添加页眉和页脚(在代码中),然后让所有新表单都继承自该类。

            【讨论】:

              【解决方案6】:

              母版页可以指定嵌入页面的内容区域。因此,从表格 A 派生表格,例如表格 B 并获取父表格的特征并不能证明这一点。 Boj 提到的更有意义,因为我们在哪里使用 Panels。

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2015-12-01
                • 2012-05-31
                • 1970-01-01
                • 1970-01-01
                • 2010-12-30
                • 1970-01-01
                相关资源
                最近更新 更多