为了调查目的而移动一些代码,我遇到了一个我不知道的.NET的一个小功能,即表单类必须是表单模块中表单设计器工作的第一个类。以下内容阻止了设计师的工作:
public class myClass
{
}
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
...
}
它仍然编译(带警告)并运行,但它不会设计。如果我将myClass移动到文件的底部,那么它可以正常工作。有谁知道为什么会这样?
此外,这意味着在我不知道的表单中有一组规则来编码布局。有没有人知道的这些地方的清单 - 或者我找到了唯一的一个?
答案 0 :(得分:3)
我认为这是.NET 1.1设计器的工件。那时候还没有部分关键字,设计师有一个不值得羡慕的任务就是找回InitializeComponent()方法,即使是在编辑过程中的代码中也是如此。没有编译器的帮助。
为了避免错误地完全解释代码的风险,它有一些关于代码应该是什么样子的基本规则。并且要求表单类成为文件中的第一个类很有意义。如果该规则不存在,则必须能够解析可能具有非常基本语法错误的类,例如不平衡的大括号。在这种情况下简单地宣称“无法加载形式”不会让任何人高兴。
一旦部分关键字可用,此要求无法解除,它仍然必须支持早期版本中设计的表单。
这是我所知道的唯一代码布局规则。有其他可能的意外的很多,手工修补InitializeComponent()总是获得WSOD的好方法。
答案 1 :(得分:0)
显然那只是设计师。没什么值得担心的。
这与C#本身无关,但更多的是使用Visual Studio设计器在屏幕上查找和绘制表单。