基于Dev控件,在WinForm下动态配置界面

  在博客园逗留了一年多了,一直想上来写点东西,但是每每写的时候又不知道有什么可以分享给大家,因为我以为自己懂的别人也懂。直到我开始带项目了,我才知道该写点什么。

  好了,废话不多说了,今天来开始写本人的第一篇博文,水平有限,还望各位海涵!

  今天我要分享的是,基于DevExpress中的LayoutControl控件,在WinForm下动态配置界面的一个设计方案,主要用于各种场景下的动态表单生成。

  相信用到DevExpress控件的童鞋,对LayoutControl这个东东应该不会陌生,相当强大的一个界面布局控件。本人也正是基于该控件,实现了一套自己的动态表单。

一、使用场景

  用于数据录入界面,数据展示界面,查询配置界面等等。例如,我们为用户定制了一张人员信息卡片,往往初期开发时由于各种原因,没有设计某个字段,或者是界面展现的方式不够友好直观,那么我们希望通过以更改配置文件的方式来满足用户的需求,而不需要我们重新对项目代码生成发布,减少了开发人员的工作量。

  当然,如果您的表单不是一个变化点,那么本人不建议使用配置的方式生成界面。

二、控件封装

  基于对LayoutControl的封装,使其可根据配置文件的配置信息,动态的创建界面。由于该控件自带了可保存其布局信息的功能,我们在设计中可以把精力放在更有用的环节上。封装后的控件名为ExLayoutControl。我也将它称为布局控件,因为它实质上就是一个容器。

三、设计经验

  该方案是本人第三个设计,已经在项目中大量实施,效果明显,而且用户对此非常认可,可以在用户的现场监督下,快速的实现其与之相关的需求。

  第一、二个版本,都是已重载现有控件,实现统一接口为核心思想。优点是,调用方比较简单,但是需要为所有用到的控件实现统一的接口才能使用到实际项目中,扩展性极差。

  在有了前两个版本的经验基础上,我意识到,不能使用继承的方式来实现该控件,而应以对象组合的方式实现。

如下图结构:

图中深色底的为容器控件;控制器用于控制控件的属性及行为。

相信各位看到此图,已经明白了其中的奥妙。其中的核心也就是这些控制器,用他们来组合管理各个控件的属性和行为。

……

洗了个澡就11点了,不玩了不玩了,睡觉了,后面抽时间完善吧!明天还有很重要的事情!

posted @ 2012-01-04 23:06  invoker707  阅读(5538)  评论(18编辑  收藏  举报