博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
设计器加载程序未提供根组件,但没有指出原因
阅读量:5979 次
发布时间:2019-06-20

本文共 1260 字,大约阅读时间需要 4 分钟。

      用C#做一个WinForm程序,其中用到了DevExpress的控件,出现了一下问题:设计时并没有提示什么错误或警告,程序运行时设计界面显示为一片空白,终止程序运行,界面变成了一个错误警告:设计器加载程序未提供根组件,但没有指出原因。虽然关闭设计界面然后重新打开,界面显示能重新正常显示,而且整个过程中不影响程序的运行,但是不断的提示这种错误,需要不断的关闭、重新打开设计界面,实在令人不爽,而且,有了问题不去解决,我认为不是一个好的程序员应有的作风,所以即使这个错误不影响运行,我也决定解决它。

      通过查资料和向资格老的同事请教,将原因归结为两个可能:1、VS2010的Bug 2、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的出现,这需要强大的技术能力作保证,同时也需要一个严格自我要求的态度。

转载于:https://www.cnblogs.com/huachen/p/3469792.html

你可能感兴趣的文章
linux开机到登陆的启动过程
查看>>
Redhat配置网卡阵列
查看>>
改写HPUX的SHELL
查看>>
我的友情链接
查看>>
项目成本管理重点
查看>>
iptables\layer7\编译内核——安装配置指南
查看>>
Android ADT下载安装
查看>>
抛却内心那一份浮躁,静下来做一些有意义的事情!
查看>>
RAID6缺两块盘数据恢复成功--戴尔(DELL ) T710服务器故障恢复
查看>>
十七周一次课
查看>>
NAS在PAT下的AAA
查看>>
《神探tcpdump第六招》-linux命令五分钟系列之四十
查看>>
netstat、ss对比使用
查看>>
我的友情链接
查看>>
这些数据科学家必备的技能,你拥有哪些?
查看>>
css div水平垂直居中
查看>>
AWK 学习笔记
查看>>
监控CPU(一)
查看>>
oracle恢复删除的数据
查看>>
postman 浏览器插件
查看>>