隨筆背景:在很多時候,很多入門不久的朋友都會問我:我是從其他語言轉到C#開發的,有沒有一些基礎性的資料給我們學習學習呢,你的框架感覺一下太大了,希望有個循序漸進的教程或者視頻來學習就好了。
其實也許我們每天面對的太多東西了,覺得很多都稀松平常了,即使很細微的地方,可能我們都已經形成習慣了。反過來,如果我們切換到其他領域,如IOS、android,那么開始我們可能對里面很多設計的規則不甚了解,開始可能也是一頭霧水。
本篇繼續上一篇《循序漸進開發WinForm項目(2)--項目代碼的分析》,繼續介紹如何循序漸進開發Winform項目,繼續介紹Winform界面層的項目設計以及相關代碼的組成部分,使得我們逐漸了解一個完整的開發方案過程。
1、界面層的項目搭建
我們從前面兩篇隨筆的介紹中,可以大概了解到界面層以下所發生的事情,本篇繼續這一趨勢,介紹界面層的開發內容。
首先我們創建一個Windows Application項目,使用VS2010(其他版本也可以)創建的Windows應用程序項目,然后把它們的項目目標框架和輸出類型修改一下,如下所示。
然后刪除自動生成的所有窗體和類庫代碼,界面最后成為如下的內容。
這樣做的本意,是把這個界面部分作為一個獨立的模塊,我們在啟動程序框架里面就可以很方便把它包含進來使用,因為我們知道,我們每次開發的業務可能都只是屬于一個大的項目中的某部分模塊,按模塊的劃分來進行開發,有方便管理維護、方便整合使用等特點。
最終在主體界面中整合的是一個個模塊,每個模塊里面又有不同的窗體界面可供使用,大概的界面模塊組合圖形如下所示。
2、業務模塊的Winform界面的生成
從第一小節中可以搭建一個干凈的界面項目模塊,但是里面還沒有任何的內容,這就需要我們進一步生成或者手工編寫我們所需的界面內容了。
為了加快效率,減少界面控件名稱的瑣碎設置,減少對象賦值的代碼編寫,我們一般建議采用工具來進行界面的生成,如下界面所示。
使用代碼生成工具生成的界面,命名和數據庫字段名稱對應,統一風格,減少出錯的幾率,提高開發效率。
通過以上設置的界面,設置我們在列表界面里面的查詢條件內容,以及需要顯示的字段內容;和編輯、新增對象界面的數據內容,然后我們就可以生成相關的窗體界面了。
單擊“Windows界面代碼生成”后,生成的窗體界面文件如下所示,分為了兩個部分,一個是列表界面,一個是數據編輯界面,通過手工的做法,我們也建議把新增、編輯數據這樣合并處理,這樣可以減少大項目模塊的代碼文件。
把相關的界面內容復制到剛才創建的空項目工程上,并添加相關的類庫應用,如框架需要支持的界面基類,公用類庫等必備的程序集,這也是我們常見的開發操作了,再次不在贅述。
最后界面層的項目截圖如下所示。
3、窗體界面的調整處理
一般來說,自動生成的界面,可能或多或少需要進行手工的一些處理,如可能一些類庫沒有添加應用,關聯的項目沒有添加進來等原因,或者是數據類型轉換的問題,不過一般問題很小,稍微處理下就能解決的。
下面我們來對自動生成的窗體界面進行一定的調整,以方便我們的數據顯示和處理。
自動創建的列表界面打開如下所示。
粗看我們應該覺得還是挺標準的列表界面,但是為了更好看,更統一,我們還是需要進行一些微調,如由于年齡是數值型,這里查詢條件有兩個作為一個區間進行組合查詢的;另外,每個查詢條件的控件寬度默認是會自動縮放的,由于條件較少,我們還是把它設置為固定寬度較好,最終我們稍微美化調整后的窗體界面如下所示。
搞定列表界面,下面我們再來看看數據的編輯界面部分,數據編輯界面生成的效果如下所示(由于版面的原因,我把它進行了一定的縮小)。
我們看到,里面的字段說明,控件的名稱等內容,都已經合理安排好了,基本上設計數據庫的時候,指定的字段備注就能正確生成出來了。
這里演示的表字段比較少,因此可能排版布局方面沒有很好的演示效果,不過我們知道DevExpress本身的LayoutControl布局很強大,我們可以隨意調整里面控件的位置。
對于控件的類型,也可以進行不同類型的轉換,如可以吧文本類型,轉換為數值類型的輸入控件等等。
這樣簡單的界面可能很多讀者會說,這個我自己添加幾個控件就可以了,也很快的,但是如果對于需要顯示的界面控件(數據庫字段很多)的情況下,如果控件顯示內容、控件名稱、布局位置,全部都要手工操作調整,那么這個工作量是非常驚人的。
我在開發自己的一個項目程序《客戶關系管理系統》的時候,里面的業務很多表的字段都不少,我就只需要拖動,調整下位置或者增加一些特別的控件進行合理展示即可,不需要去調整太多內容,這樣可以為我節省大量的界面開發時間,更重要的是,減少出錯的幾率。
如對于《客戶關系管理系統》客戶聯系人這個表,字段不少,生成的界面很多控件,默認都是單排的,我根據需要,把他們進行再次排列,并增加一個TabControl選項卡的控件,以便放置更多的內容,和進行必要的區分,詳細調整后的界面效果如下所示,這個就是一個復雜界面調整的一個好的案例說明了。
4、整合業務邏輯層到界面項目
我剛才在設計編譯界面層的時候,是在界面項目引用的地方,把業務邏輯層的項目工程包含到引用里面了,如下所示。
這樣的引用操作是沒什么問題,但是我們的項目組件如果拆分的較多,每個界面還需要帶著一個業務邏輯的程序集,那么程序集DLL的數量就會翻倍,不便于管理。
我的意思就是把他們全部進行整合,避免文件過于零散,但是最好避免到處復制文件的局面,這樣增加維護成本,不是我們希望看見的。
基于上面的兩種考慮,我們可以在界面項目里面添加文件“鏈接”的操作,也就是代碼文件的影子,編譯的時候,他們是編譯整合到程序集里面的,但是我們維護的時候,它們所有的”鏈接“引用,都是指向同一個文件,不會造成多處復制的問題。
最終的項目構成如下所示,并順利可以通過編譯,這樣我們在使用這個Customer的業務模塊的時候,只需要一個界面部分的程序集(WHC.TestProject.UIDx.DLL)即可。
下一篇我們繼續介紹界面模塊如何整合到主體項目工程里面,進行使用等操作。
循序漸進開發WInform項目--系列文章導引:
循序漸進開發WinForm項目(6)--開發使用混合式Winform模塊
循序漸進開發WinForm項目(5)--Excel數據的導入導出操作
循序漸進開發WinForm項目(4)--Winform界面模塊的集成使用
循序漸進開發WinForm項目(3)--Winform界面層的項目設計
循序漸進開發WinForm項目(2)--項目代碼的分析
循序漸進開發WinForm項目(1) --數據庫設計和項目框架的生成