原創(chuàng)|其它|編輯:郝浩|2012-10-15 10:36:18.000|閱讀 2796 次
概述:基于DevExpress控件,在WinForm下動(dòng)態(tài)配置界面
# 界面/圖表報(bào)表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
今天我要分享的是,基于DevExpress中的LayoutControl控件,在WinForm下動(dòng)態(tài)配置界面的一個(gè)設(shè)計(jì)方案,主要用于各種場景下的動(dòng)態(tài)表單生成。
相信用到DevExpress控件的各位呢,對LayoutControl應(yīng)該不會(huì)陌生,這是一個(gè)相當(dāng)強(qiáng)大的一個(gè)界面布局控件。本人也正是基于該控件,實(shí)現(xiàn)了一套自己的動(dòng)態(tài)表單。
一、使用場景
  用于數(shù)據(jù)錄入界面,數(shù)據(jù)展示界面,查詢配置界面等等。例如,我們?yōu)橛脩舳ㄖ屏艘粡埲藛T信息卡片,往往初期開發(fā)時(shí)由于各種原因,沒有設(shè)計(jì)某個(gè)字段,或者是界面展現(xiàn)的方式不夠友好直觀,那么我們希望通過以更改配置文件的方式來滿足用戶的需求,而不需要我們重新對項(xiàng)目代碼生成發(fā)布,減少了開發(fā)人員的工作量。
當(dāng)然,如果您的表單不是一個(gè)變化點(diǎn),那么本人不建議使用配置的方式生成界面。
二、控件封裝
基于對LayoutControl的封裝,使其可根據(jù)配置文件的配置信息,動(dòng)態(tài)的創(chuàng)建界面。由于該控件自帶了可保存其布局信息的功能,我們在設(shè)計(jì)中可以把精力放在更有用的環(huán)節(jié)上。封裝后的控件名為ExLayoutControl。我也將它稱為布局控件,因?yàn)樗鼘?shí)質(zhì)上就是一個(gè)容器。
三、設(shè)計(jì)經(jīng)驗(yàn)
該方案是本人第三個(gè)設(shè)計(jì),已經(jīng)在項(xiàng)目中大量實(shí)施,效果明顯,而且用戶對此非常認(rèn)可,可以在用戶的現(xiàn)場監(jiān)督下,快速的實(shí)現(xiàn)其與之相關(guān)的需求。
第一、二個(gè)版本,都是已重載現(xiàn)有控件,實(shí)現(xiàn)統(tǒng)一接口為核心思想。優(yōu)點(diǎn)是,調(diào)用方比較簡單,但是需要為所有用到的控件實(shí)現(xiàn)統(tǒng)一的接口才能使用到實(shí)際項(xiàng)目中,擴(kuò)展性極差。
在有了前兩個(gè)版本的經(jīng)驗(yàn)基礎(chǔ)上,意識到,不能使用繼承的方式來實(shí)現(xiàn)該控件,而應(yīng)以對象組合的方式實(shí)現(xiàn)。
如下圖結(jié)構(gòu):
圖中深色底的為容器控件;控制器用于控制控件的屬性及行為。
相信各位看到此圖,已經(jīng)明白了其中的奧妙,其中的核心也就是這些控制器,用他們來組合管理各個(gè)控件的屬性和行為。
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉(zhuǎn)載自:博客園