今天我要分享的是,基于DevExpress中的LayoutControl控件,在WinForm下动态配置界面的一个设计方案,主要用于各种场景下的动态表单生成。 相信用到DevExpress控件的各位呢,对LayoutControl应该不会陌生,这是一个相当强大的一个界面布局控件。本人也正是基于该控件,实现了一套自己的动态表单。 一、使用场景 用于数据录入界面,数据展示界面,查询配置界面等等。例如,我们为用户定制了一张人员信息卡片,往往初期开发时由于各种原因,没有设计某个字段,或者是界面展现的方式不够友好直观,那么我们希望通过以更改配置文件的方式来满足用户的需求,而不需要我们重新对项目代码生成发布,减少了开发人员的工作量。 当然,如果您的表单不是一个变化点,那么本人不建议使用配置的方式生成界面。 二、控件封装 基于对LayoutControl的封装,使其可根据配置文件的配置信息,动态的创建界面。由于该控件自带了可保存其布局信息的功能,我们在设计中可以把精力放在更有用的环节上。封装后的控件名为ExLayoutControl。我也将它称为布局控件,因为它实质上就是一个容器。 三、设计经验 该方案是本人第三个设计,已经在项目中大量实施,效果明显,而且用户对此非常认可,可以在用户的现场监督下,快速的实现其与之相关的需求。 第一、二个版本,都是已重载现有控件,实现统一接口为核心思想。优点是,调用方比较简单,但是需要为所有用到的控件实现统一的接口才能使用到实际项目中,扩展性极差。 在有了前两个版本的经验基础上,意识到,不能使用继承的方式来实现该控件,而应以对象组合的方式实现。 如下图结构: 图中深色底的为容器控件;控制器用于控制控件的属性及行为。 相信各位看到此图,已经明白了其中的奥妙,其中的核心也就是这些控制器,用他们来组合管理各个控件的属性和行为 更多在线资源
|