继承窗体,编号Designer.cs
本文关键字:Designer cs 编号 窗体 继承 | 更新日期: 2023-09-27 17:58:13
当我从Form
或自定义窗体继承时,我并不总是得到a.Designer.cs
文件。如果我查看表单并双击它,InitializeComponent()
方法最终会出现在我的派生类中。我将如何强制创建Designer.cs
文件,是什么原因导致它不能创建?
我看到它并没有发生在我所有的形式上,但不确定是什么导致了什么。。?
编辑:
- 右键单击解决方案>添加>新建项目>Windows窗体应用程序创建新项目
- 右键单击项目>添加>类>"FormA.cs"
- edit class:"public class FormA:Form"=>仍然只是一个类
- add方法:public FormA(){}=>解决方案资源管理器显示一个表单图标,但没有子文件
- 右键单击>视图设计器=>显示窗体
- 双击form=>生成FormA.cs中的FormA_Load方法和InitializeComponent方法,并生成FormA.resx文件。但没有Designer.cs
右键单击项目>添加>类>"FormA.cs"
这就是问题所在。设计器不添加.Designer.cs
文件。设计器使用已可用的文件。
如果创建一个新表单,默认情况下它将有一个.Designer.cs
文件。然后,您可以更改基类,它将保留.Designer.cs
文件。
如果创建一个新类,它将没有.Designer.cs
文件。设计师不会为你创造一个;它实际上并不需要它。
这里真正发生的事情是,当您在VS项目中添加一个类或窗体时,它是从模板开始创建的。事实上,如果您选择"添加新项"而不是"添加类"或"添加表单",您可以在所有已安装模板(包括标准模板和您可以自己构建的模板)的列表中同时看到"类"answers"表单"。
模板只是一个项目,其中一些名称是参数化的(例如类名和类的命名空间)。在Form的情况下,模板由两个不同的文件组成,而类一只包含一个文件。Designer文件的存在并不会改变类的功能,它只是一种将生成的东西挡在你之外的方式,这样你就不太容易修改它
在设计器中查看表单并不取决于设计器文件的存在,而是取决于Visual Studio在双击项目时会查找类的DesignerAttribute(继承自form),并决定如何打开它。
只需尝试快速查看以下结果:
typeof(Form).GetCustomAttributes(typeof(DesignerAttribute), false);