关于加载设计器遇到一个或多个错误问题的解决方案 [转载]
用VS.2005搞.NET开发的同仁们,也许有不少人经常遇到如下图所示的错误吧:
有人说这是VS.2005的一个漏洞,就算是吧,因为你最终也没有找到这个问题的所在,再加上也许整天的加班,也许有点时间还想缓解一下长期工作的压力,也许。。。。。。。重要的一点就是程序调试还没有错误,美中不足的就是我们怎么来设计,也许你会选择硬编码,不过没有办法只好委曲求全了,管它什么加载设计器遇到几个问题呢,过一天和尚撞一天钟吧。反正这生活并不比和尚强到哪里去。哎。。。。。无耐啊。。。。。。
好了,我们言归正转吧,首先我们由表到里的来看一下上面这幅图的错的描述吧:
Error Message:“加载设计器时遇到一个或多个错误。这些错误在下面列出。一些错误可通过重新生成项目来修复,而另一些错误则需要更改代码”。
Detail Error Message:“类Form1可以进行设计,但不是文件中的第一个类。Visual Studio要求设计器使用文件中的第一个类。移动类代码使之成为文件中的第一个类,然后尝试重新加载设计器”。(这位同仁请注意红色字体)
分析一下上面的Two Type Message,这种错误情况的发生,当然一些错误可通过重新生成项目来修复,但是要注意下面的一个错误提示:而另一些错误则需要更改代码。
重新生成项目来排除错误我们就不用多费口舌了,只是动动Mouse就可以了啊。OK,下面我们就看看怎样通过修改代码来实现错误的排除吧。嗯……什么解释方法更好呢?嗯……好,这样吧,我们还是举例说明吧!那就看一下下面这个图文并茂的例子吧:
首先我们建一个WinForm的Solution吧:
简单窗体(只是加一个Button)如下所示:
改窗体对应的Form1.cs的代码如下所示:
下面我们在类Form之前加任意一个类(就名为badClass吧),代码如下所示:
下面我们来看看有什么情况发生,加过类badClass之后我们再去参观那个非常Sample的Form1窗体,结果你会奇怪地发现它变的面目全非,如下所示:
此时此刻你可能会想这是怎么会事呢我明明只是在里面加了一个这么简单的Class啊!又没有什么语法层面上的错误。怎么会出现这样的错误呢?莫非正像错误信息中所说的那样,对于窗体而言它需要的类只是Form1.cs文件中的第一个类不成,好,那我就把这两个类的位置倒置一下,看看有什么效果,于是你就把这两个类的位置倒置过来如下所示:
然后我们再来打开这个Form1窗体,你会惊奇的发现怎么又好了啊,错误竟然没有了。消失的Form1窗体又回来了,如下所示:
好了,现在我们来看看吧,问题究竟出在哪里。经过对比你会发现,两段代码的唯一的不同就是两个类所处的位置正好相反。这时,可能得出这样的结论,对于VS.2005来说,为了编程的方便,将Form1后置代码以关键字partial被分别放在两个文件当中,它们两个是一个整体,一个类。所以VS.2005在加载窗体设计器的时候就会自动的去匹配Form1.cs窗体中的第一个类,所以如果你把第一个类的位置占用的话,VS.2005在加载窗体设计器就会欲匹配它,因为它们两个不匹配,所以就会出现上述那样的错误。所以嘛,我们再作类似WinForm的时候可一定要守本分啊!不要在这方面创新哟,以免自己徒劳无功。