在博客園逗留了一年多了,一直想上來寫點東西,但是每每寫的時候又不知道有什么可以分享給大家,因為我以為自己懂的別人也懂。直到我開始帶項目了,我才知道該寫點什么。
好了,廢話不多說了,今天來開始寫本人的第一篇博文,水平有限,還望各位海涵!
今天我要分享的是,基於DevExpress中的LayoutControl控件,在WinForm下動態配置界面的一個設計方案,主要用於各種場景下的動態表單生成。
相信用到DevExpress控件的童鞋,對LayoutControl這個東東應該不會陌生,相當強大的一個界面布局控件。本人也正是基於該控件,實現了一套自己的動態表單。
一、使用場景
用於數據錄入界面,數據展示界面,查詢配置界面等等。例如,我們為用戶定制了一張人員信息卡片,往往初期開發時由於各種原因,沒有設計某個字段,或者是界面展現的方式不夠友好直觀,那么我們希望通過以更改配置文件的方式來滿足用戶的需求,而不需要我們重新對項目代碼生成發布,減少了開發人員的工作量。
當然,如果您的表單不是一個變化點,那么本人不建議使用配置的方式生成界面。
二、控件封裝
基於對LayoutControl的封裝,使其可根據配置文件的配置信息,動態的創建界面。由於該控件自帶了可保存其布局信息的功能,我們在設計中可以把精力放在更有用的環節上。封裝后的控件名為ExLayoutControl。我也將它稱為布局控件,因為它實質上就是一個容器。
三、設計經驗
該方案是本人第三個設計,已經在項目中大量實施,效果明顯,而且用戶對此非常認可,可以在用戶的現場監督下,快速的實現其與之相關的需求。
第一、二個版本,都是已重載現有控件,實現統一接口為核心思想。優點是,調用方比較簡單,但是需要為所有用到的控件實現統一的接口才能使用到實際項目中,擴展性極差。
在有了前兩個版本的經驗基礎上,我意識到,不能使用繼承的方式來實現該控件,而應以對象組合的方式實現。
如下圖結構:

圖中深色底的為容器控件;控制器用於控制控件的屬性及行為。
相信各位看到此圖,已經明白了其中的奧妙。其中的核心也就是這些控制器,用他們來組合管理各個控件的屬性和行為。
……
洗了個澡就11點了,不玩了不玩了,睡覺了,后面抽時間完善吧!明天還有很重要的事情!
