在XP/Win7上安装VS2005/VS2008,在平常的WinForm开发中经常故障,Win7会提示出错模块,接着再打开,窗体上面的控件没有了,比如:MenuStrip消失,StatusStip消失,或者MenuStip的MenuItem全不见了。
就算不是VS故障,当从一个编辑视图转到设计视图的时候,VS会加载设计文件Designer.cs,然后控件消失。不消失的情况是:界面上的按钮被拉长,即Designer.cs文件里面控件的宽度属性变成一个很大的数。
“很久之前的一天,在别人的本子上面使用VS2008发现没有此问题,遂用其本子开发长达一个月之久(阴险啊!)。”
时间往回拉,在安装了VS2005/8之后我便会安装插件Visual Assist X,再加上一个RockScroll插件。以为加速了编码又有代码缩略图预览,高兴啊。当我使用Win7之后,VS2008崩溃了,当然不是Win7的原因,崩溃之后,会弹出产生错误的模块,发现竟然是RockScroll的DLL文件,遂惑而有解。把RockScroll Add-in卸载了之后,一切都好了!高兴,全国人民欢欣鼓舞了一番。
在窗体出现控件异常的时候,发现设计文件Designer.cs文件里面,控件的定义还在,但是不显示,遂惑而不解。后来发现要在父窗口显示控件就必须把控件添加到集合里面,如Form.Controls.Add(...);依此类推,菜单消失的事其实就是没有把MenuItem加进MenuStrip的控件集合里面。+之,惑解。知其然并知其所以然!