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