Visual Studio 在创建从 Form 继承的新类时更改了设计器生成的代码

本文关键字:代码 新类时 创建 Studio Form Visual 继承 | 更新日期: 2024-10-30 18:07:01

根据建议,我在一个新线程中问这个问题。这个问题源于 Reza 对这个问题的回答,我希望自定义属性显示在窗体的设计器中。

为此,我需要创建一个类,让我们将其称为BaseForm并让BaseFormSystem.Windows.Forms.Form继承,我应该将我想要的属性添加到该类中,并让我的用户表单从BaseForm继承。喜欢这个:

public partial class BaseForm : Form
{
    [Browsable(true), Description("test property"), Category("Appearance")]
    public Color bCol { get; set; }
}
public partial class Form1 : BaseForm
{
    public Form1()
    {
        InitializeComponent();
    }
}

但是,当我这样做时,Visual Studio将设计器生成的partial class Form1InitializeComponent等所在的位置)更改为partial class BaseForm。这带来了错误,即InitializeComponent不在Form1范围内,所以我将其更改为:

public partial class BaseForm : Form
{
    [Browsable(true), Description("test property"), Category("Appearance")]
    public Color bCol { get; set; }
    public BaseForm()
    {
        InitializeComponent();
    }
}
public partial class Form1 : BaseForm
{
    /*public Form1()
    {
        InitializeComponent();
    }*/
}

这违背了Form1继承BaseForm的目的,因为我在设计器中看到的是BaseForm继承自Form,而不是Form1BaseForm继承,正如我希望的那样。

Visual Studio为什么要这样做,我能做些什么来解决这个问题?

Visual Studio 在创建从 Form 继承的新类时更改了设计器生成的代码

设计器编辑文件中的第一个类。您已将BaseForm作为.cs文件中的第一类。

要解决此问题,请将其放在单独的文件中,或在Form1代码之后移动BaseForm代码。

通常,最好将BaseForm代码分开,因此最好向项目添加新窗体并将其命名为BaseForm并向窗体添加其他属性,然后对于其他窗体,添加Inherited Form或添加新Form并手动更改基类名称。