我正在尝试使用通用模板创建一个 Winforms 应用程序,即所有表单都将继承一个预定义的模板,用于新建、保存、编辑、删除按钮和一些通用图像以及我将手动放置的继承表单的其余内容。
任何建议如何实现这一点将不胜感激。
我将创建一个新表单作为类似模板的表单,并强制它实现一个接口,在下面的示例中,我将该接口命名为该接口IApplicationWindow
,并声明了旨在由子类实现的公共方法。
除了您提到的常用控件之外,我还将在类似模板的表单中放置所有应该在所有窗口中常用的东西,例如日志记录助手类等等。
假设我们已经定义了一个名为 的接口IApplicationWindow
,类似模板的表单将如下所示:
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
}
这就是扩展您的类似模板的表单的样子(请注意,您必须重写方法以提供特定的实现):
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
}
[...]
}
最后,我会小心地将常用控件放置在模板表单的 UI 中,这样如果您调整扩展表单的大小,这些控件就会被正确放置(正确使用锚点)。