C# 在Windows窗体(.Net 4)应用程序中,如何为所有窗体定义基本窗体样式?

C# 在Windows窗体(.Net 4)应用程序中,如何为所有窗体定义基本窗体样式?,c#,.net,winforms,C#,.net,Winforms,例如,我希望所有表单都具有相同的图标和起始位置。但是,我还需要能够以通常的方式定义每个表单中的内容,比如拖放控件等等 这可能吗 只需创建自己的基本表单类: class FormBase : Form { public FormBase() { Icon = SomeIcon; StartPosition = StartPosition.Whatever; } } 您可以有一个静态图标和位置,使用静态构造函数初始化它,然后创建一个构造函数,

例如,我希望所有表单都具有相同的
图标
起始位置
。但是,我还需要能够以通常的方式定义每个表单中的内容,比如拖放控件等等


这可能吗

只需创建自己的基本
表单
类:

class FormBase : Form
{
    public FormBase()
    {
        Icon = SomeIcon;
        StartPosition = StartPosition.Whatever;
    }
}

您可以有一个静态图标和位置,使用静态构造函数初始化它,然后创建一个构造函数,在该构造函数中使用静态图标和位置初始化实例的图标和位置属性: 外汇

然后在创建表单时使用“Foo”作为基本表单


我没有检查“Icon”和“position”的引用,所以我不知道它们是否存在,但您得到了这样的想法:)

创建一个表单,并按照您想要的方式设置Icon和StartPosition属性。编译。这将是你的基本形式。现在使用Project+添加新项、Windows窗体节点并选择继承的窗体项模板。IDE将提示您选择基本表单。

是的,但请记住表单继承在设计器支持方面有点不稳定。请记住,任何需要子窗体访问的控件都必须将其修饰符更改为
受保护的
Internal
将适用于同一程序集中的窗体,但也将向同一程序集中的任何类公开该控件;应避免使用
Public
)。这包括面板或其他容器之类的东西,如果您的基本表单必须定义一些基本的表示元素,那么您可能需要使用这些东西,因此您需要将子表单包含到特定的区域


为此,只需像创建任何其他表单一样创建基本表单,然后在创建新表单时,选择“继承表单”而不是“表单”,然后选择基本表单。

另一种方法是创建一个扩展方法,在其中设置所有参数:

public static class FormExtentsions
{
    public static void SetDefault(this Form form)
    {
        form.Icon = new Icon("path");
        form.StartPosition = FormStartPosition.CenterScreen;
    }
}
用户可以这样使用它:

public partial class Form1 : Form
{
    public Form1()
    {
        // Put it here if you want to be able to override everything
        this.SetDefault();

        InitializeComponent();

        // Put it here if you want the defualt to override "local" settings
        this.SetDefault();

    }
}
public partial class Form1 : Form
{
    public Form1()
    {
        // Put it here if you want to be able to override everything
        this.SetDefault();

        InitializeComponent();

        // Put it here if you want the defualt to override "local" settings
        this.SetDefault();

    }
}