某天,具体时间忘了,只记得上了节课回来,就发现我刚做好的《机房收费系统》的frmMain窗体在解决方案资源管理器中找不到了,但是运行的时候却能正常的显示出来,当下我就郁闷了。本来一天的专业课,好不容易挤出时间,把界面显示做出来了,菜单栏也用英文名命名了,现在可好,啥也看不见了,难道要重来吗!呜呜呜。。。
因为我的洁癖,见不得“没用的”代码,将窗体中的一句话删了,直接造成了上面的结果,真是后患无穷啊!我到底是删了什么东西,这么神奇?
Public Class frmMain End Class
Public Class frm End Class而我的类frmMain中没有,难道真的是因为这句话?算啦,死虎当活虎医,抱着试试看的态度,我把代码一改: 用到我的frmMain大老虎上,不到5秒的时间,药到病除,活力重现,frmMain老虎和其他的老虎一样一样的啦。
Public Class frmMain End Class
Public Class frmMain End Class
FrmMain.vb 是指类代码。FrmMain.Designer.vb 是指界面设计代码。在 VB 2003 和之前的.net版本中这两部分是在一起的,从 VB 2005 以后才分开。也就是说,在之前的IDE里面,IDE将Designer.vb里面的代码全部放在窗体代码文件开头。
简单的来说 .Designer.vb 保存的是用户界面设计自动生成的代码,里面写着的是比如 Form 的高度宽度啊、窗体上有个 TextBox 的 Text 啊之类这些东西,这些东西用户在 IDE 中只需要用鼠标去画并修改相应的控件属性就可以了,VS 会自动生成相应的代码保存到 Designer.vb 中。
在FrmMain.Designer.vb中,我们可以看见这样的描述:
partial 信息只对编译器有用,编译器在编译时看到对某个类的描述是“碎”的(partial 的),它会去其他地方收集该类的其他碎片,然后把所有的该类的碎片组合成完整的一个类,再对其编译。-- @jizhongbo 简单地说就是我们可以把类写在不同的文件中,类名相同,用partial修饰后,IDE会找全类的碎片,然后粘在一块儿,形成完整的一个类。
我们的frmMain.vb和frmMain.Designer.vb就是将一个类放在了不同的文件中,我将frmMain.vb删除后,“窗体类”在重组时不完整,便在右边的解决方案资源管理器中不显示了。但是因为一个“窗体类”负责显示的部分在FrmMain.Designer.vb,我删除的是frmMain.vb,所以没有影响窗体在运行时显示。
尽管查资料和整理博客用的时间可以让我再重新建一个MDI窗体了,但是如果没有查资料的过程,就不会有现在的知识上的收获,有的更多的是对VS的胆怯和对自己当时的“傻”的懊悔。
了解更多frm.Designer.vb 的知识,向大家推荐:http://tieba.baidu.com/p/1822178540#