根据建议,我在新线程中提出这个问题。这个问题源于 Reza 对 this question 的回答。 ,我希望自定义属性显示在表单的设计器中。
为了实现这一点,我需要创建一个类,我们将其命名为 BaseForm
并让 BaseForm
继承自 System.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 Form1
(InitializeComponent
等所在位置)更改为 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
FormBaseForm
的 Form1
。
为什么 Visual Studio 会这样做?我可以采取什么措施来解决这个问题?
最佳答案
设计者编辑文件中的第一个类。您已将 BaseForm
作为 .cs 文件中的第一类。
要解决此问题,请将其放在单独的文件中或将 BaseForm
的代码移到 Form1
代码之后。
一般来说,最好将 BaseForm
的代码分开,因此最好将新表单添加到项目中并将其命名为 BaseForm
并向表单添加其他属性,然后对于其他表单,添加Inherited Form
或添加新的Form
并手动更改基类名称。
关于c# - 当我创建继承自 Form 的新类时,Visual Studio 会更改设计器生成的代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36762789/