Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Winforms应用程序模板_Winforms_Templates - Fatal编程技术网

Winforms应用程序模板

Winforms应用程序模板,winforms,templates,Winforms,Templates,我正在尝试创建一个带有通用模板的Winforms应用程序,即所有表单都将继承一个预定义的模板,用于新建、保存、编辑、删除按钮和一些通用图像,以及我将手动放置的其他内容 任何关于如何实现这一点的建议都将不胜感激。我将创建一个新表单作为模板,并强制它实现一个接口,在下面的示例中,我将该接口命名为iaapplicationwindow,其中声明了拟由子类实现的常用方法 除了您提到的常用控件之外,我还将在类似模板的表单中放置所有应该在所有窗口中常用的东西,如日志帮助器类等等 假设我们已经定义了一个名为i

我正在尝试创建一个带有通用模板的Winforms应用程序,即所有表单都将继承一个预定义的模板,用于新建、保存、编辑、删除按钮和一些通用图像,以及我将手动放置的其他内容


任何关于如何实现这一点的建议都将不胜感激。

我将创建一个新表单作为模板,并强制它实现一个接口,在下面的示例中,我将该接口命名为
iaapplicationwindow
,其中声明了拟由子类实现的常用方法

除了您提到的常用控件之外,我还将在类似模板的表单中放置所有应该在所有窗口中常用的东西,如日志帮助器类等等

假设我们已经定义了一个名为
iaapplicationwindow
的接口,类似模板的表单如下所示:

public partial class TemplateForm : Form, IApplicationWindow
{
    // Place here as protected class members all object instances
    // that are common to all your forms, like helper class for logging
    // purposes or security delegates.
    [...]

    public TemplateForm()
    {
        InitializeComponent();
    }

    #region IApplicationWindow interface implementation

    public virtual void Save()
    {
        // Do nothing unless you need common behavior.
        // Leave extenders implement the concrete behavior.
    }

    public virtual void Edit()
    {
        // Do nothing unless you need common behavior.
        // Leave extenders implement the concrete behavior.
    }

    [...]

    #endregion
}
这就是扩展类似于模板的表单的表单的外观(请注意,必须重写方法以提供特定的实现):

最后,我会小心地将常用控件放置在模板表单的UI中,这样,如果调整扩展表单的大小,控件就会正确放置(正确使用锚定)

public partial class AnApplicationWindow : TemplateForm
{
    public AnApplicationWindow()
    {
        InitializeComponent();
    }


    public override void Save()
    {
        base.Save();
        // Implement specific behavior here
    }

    public override void Edit()
    {
        base.Edit();
        // Implement specific behavior here
    }

    [...]

}