当我从Form
或自定义表单继承时,我并不总是获得a.Designer.cs
文件。如果我然后查看表单并双击它,InitializeComponent()
方法最终在我的派生类中。我如何强制创建Designer.cs
文件,以及可能导致它不是什么?
我发现我的所有表格都没有发生,但不确定是什么导致了什么......?
编辑:
答案 0 :(得分:3)
右键单击项目>添加>课程> “FormA.cs”
这就是问题所在。设计人员不会添加.Designer.cs
个文件。设计人员使用已经可用的文件。
如果您创建新表单,默认情况下它将包含.Designer.cs
文件。然后,您可以更改基类,它将保留.Designer.cs
文件。
如果您创建一个新类,它将没有.Designer.cs
个文件。设计师不会为你创造一个;它实际上并不需要它。
答案 1 :(得分:0)
这里真正发生的事情是,当您添加一个类或表单来触摸您的VS项目时,它是从模板开始创建的。实际上,如果您选择Add New Item而不是Add Class或Add Form,您可以在所有已安装模板的列表中看到Class和Form(标准模板和您可以自己构建的模板)。
模板只是一个参数化的项目(例如类的名称和名称空间)。在Form的情况下,模板由两个不同的文件组成,而第一个类只包含一个文件。存在Designer文件的事实不会改变您的类的功能,它只是一种保持生成的东西不受影响的方式,因此您不太容易修改它。
您在设计器中查看表单的事实并不依赖于Designer文件的存在,而是因为当您双击项目时Visual Studio会查找您的类的DesignerAttribute(它继承了来自Form),并决定如何打开它。
试着快速查看结果:
typeof(Form).GetCustomAttributes(typeof(DesignerAttribute), false);