用C#作一个WinForm程序,其中用到了DevExpress的控件,出现了一下问题:设计时并无提示什么错误或警告,程序运行时设计界面显示为一片空白,终止程序运行,界面变成了一个错误警告:设计器加载程序未提供根组件,但没有指出缘由。虽然关闭设计界面而后从新打开,界面显示能从新正常显示,并且整个过程当中不影响程序的运行,可是不断的提示这种错误,须要不断的关闭、从新打开设计界面,实在使人不爽,并且,有了问题不去解决,我认为不是一个好的程序员应有的做风,因此即便这个错误不影响运行,我也决定解决它。程序员
经过查资料和向资格老的同事请教,将缘由归结为两个可能:一、VS2010的Bug 二、DevExpress的Bug。虽然网上列出了不少说法,可是都加了可能、好像这样的字眼,即没有肯定问题的根源。我认为应该是第二种可能,便是DevExpress的问题,经过网上查资料,我找了一个与我状况十分相似的,其将问题归咎于DevExpress套件中BarManager组件的释放顺序。在个人设计界面中,有的BarManager的父窗体并非设计界面的根窗体,即并非设计界面最大最外层的窗体,而是位于根窗体上的相似于PanelControl 或者SplitContainerControl这样的窗体(这里将父窗体设置为这些Control是程序上的须要),因此在释放这些父窗体的时候,若还有Menu引用着该BarManager,可能就会致使界面的Dispose出现问题,从而致使了程序终止运行后设计界面报错。为了试着解决问题,我将BarManager替换为WinForm的ToolStrip控件,而后从新试运行,问题没再出现。不过,很遗憾,虽然问题解决了,可是并无真正的找到问题出现的根本缘由,以及对应的解决问题的最好办法。关于BarManager,其实还有一个小问题:经过设计界面添加一个Item后,再经过设计界面删除,可是查看设计器代码会发现添加Item时自动生产的一些代码并无删除,有些会有隐患,好比不能再添加相同名称的Item,有些没有什么隐患,可是对于程序员来讲,多余的代码老是不该该存在的,因此还须要本身去手动查看哪些是须要删除的代码,这点也应该属于BarManager一个很大的缺点。设计
小结:DevExpress的控件确实比WinForm的要更加美观一些,用起来方便一些,可是DevExpress的控件的bug确实也比WinForm的多,例如这一个小Bug就让我对DevExpress感受很不爽,一样的,咱们也是作程序的,若是咱们作的程序出现让用户很不爽的Bug,用户的感受应该和我如今的感受应该是同样的,因此做为一个程序员,应当尽量的减小本身程序中的bug。作到程序中一点问题也没有,恐怕没有一个程序员敢这么担保吧,可是应当不遗余力的防止bug的出现,这须要强大的技术能力做保证,同时也须要一个严格自我要求的态度。orm