解决DevExpress TreeList控件BestFitColumns()不起作用的问题

  这个控件的Demo中BestFitColumns()是可以执行成功的,而我的不行,dev官网上有人提的问题都没人回答。

  我们的项目中界面不仅仅是在窗体里画的,窗体的基类里只画了大体的布局控件(每种布局就表示一种类型的窗体,实际业务的窗体继承适合自己的窗体),将窗体画分了各个区域,每个区域中的控件是由一个叫做所谓的外观层(这个外观层比设计模式和其他开源等项目中的外观层意义不大一样,比它们要复杂)创建的,每种窗体基类只要访问外观的对象获得控件添加到相应区域就行,其他的什么都不做,与控件相关的事件和像下拉框中的编辑项都由外观层的相应类完成,实际业务窗体给外观的各对象赋值就行,业务逻辑层的对象必须实现自己需要实现的接口,因为外观层中只知道这些接口,这样实现简单创建界面的同时还实现了界面层和业务层的低耦合。

  但我创建一种使用TreeList控件的基窗体时,我在外观层中调用BestFitColumns()不起作用,原因是TreeList控件还未添加到实际的窗体中,它还不知道自己的大小,所以它的列无法按内容自适应宽度,我把它移到基窗体的添加TreeList控件之后,但此时还是不成功,我在添加TreeList控件之后和调用BestFitColumns()之前,调用TreeList控件的ForceInitialize(),这样BestFitColumns()就起作用了。这样它的意思就是TreeList控件首先已经添加到窗体,然后本身也我完成了初始化,然后它才能按内容自适应宽度,希望这个对遇到同样问题的人有帮助,差点忘了,我们的dev是9.3的。

  目前这个项目的架构接近尾声了,还做了一个实际的窗体和一个测试的窗体,很好的完成预期目标,就是不知道这样的架构能不能容易的理解和掌握,注释是很全了,几乎每个地方都有,接下来会画架构的类图和简单的使用说明,然后最好是实际演示做一个业务模块。这段时间还在做一个额外的单子(挣点小钱,呵呵),是有点累的,真想能多点精力和时间。

作者:Rick Carter
出处:http://pains.cnblogs.com/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

原文地址:https://www.cnblogs.com/pains/p/1694103.html