天天看點

循序漸進開發WinForm項目(4)--Winform界面子產品的內建使用

其實也許我們每天面對的太多東西了,覺得很多都稀松平常了,即使很細微的地方,可能我們都已經形成習慣了。反過來,如果我們切換到其他領域,如IOS、android,那麼開始我們可能對裡面很多設計的規則不甚了解,開始可能也是一頭霧水。

上篇介紹了如何利用工具進行Winform界面層窗體的快速生成,并進行适當的調整,已達到合理布局,顯示美觀等的效果,本篇繼續這一主題介紹下去,上篇我們開發好的獨立界面子產品,如何在主體項目中內建使用呢?

首先我們把生成的界面層DLL複制到項目工程中,然後在主項目工程中添加相關的應用,如下所示。

循序漸進開發WinForm項目(4)--Winform界面子產品的內建使用

然後,我們需要做的就是,在主體界面子產品裡面添加一個功能按鈕的入口,如下所示是我在我的架構界面啟動子產品裡面添加一個按鈕的效果。

循序漸進開發WinForm項目(4)--Winform界面子產品的內建使用

然後在按鈕的單擊事件裡面,添加下面的代碼即可。

其中ChildWinManagement是公用類庫裡面一個輔助類,用來在多文檔的情況下進行窗體的展示,傳入一個MDI的Parent的窗體對象引用,另外一個是構造顯示的窗體類型,它會根據類型來判斷是否已經執行個體化了,如果存在就打開,否則就建立一個新的窗體病顯示出來主界面裡面。

啟動界面,後看到的效果如下所示(我們在背景添加一些測試資料後)。

循序漸進開發WinForm項目(4)--Winform界面子產品的內建使用

輕按兩下資料出來的編輯界面如下所示。

循序漸進開發WinForm項目(4)--Winform界面子產品的內建使用

這樣,我們在還沒有添加任何代碼和邏輯實作的情況下,基本的界面已經出來了,而且相關的資料存儲和顯示的功能已經存在,我們所需要做的就隻是細化裡面的内容即可。

 第一節中介紹的是傳統方式的界面子產品的繼承,開發架構本身也還提供了另外一種方式的界面子產品內建方式,插件化的子產品化內建。我們通過把相關的DLL複制到運作的目錄下,并且在資料庫裡面配置好相關的Winform子產品資訊後,就可以在主界面中調用出來是用來。

首先我們配置菜單的時候,登陸權限管理系統,添加相關的菜單項目,如下所示。當然,如果你有自己的菜單管理子產品,自己通過自己的手工設定好相關的資訊即可。

循序漸進開發WinForm項目(4)--Winform界面子產品的內建使用

 好,搞定菜單的動态配置後,我們重新登陸下系統的主界面,看看有無變化了。

循序漸進開發WinForm項目(4)--Winform界面子產品的內建使用

從主界面的Ribbon工具欄,我們可以看到,裡面已經新增了一個客戶管理(紅色部分)的内容了,這個位置就是我們剛才新增菜單的位置。單擊菜單按鈕,那麼就會展現出來客戶管理的内容了。

整個主界面架構,加上打開的客戶管理界面,整體的效果是一個多文檔的界面效果。

循序漸進開發WinForm項目(4)--Winform界面子產品的內建使用

前面幾篇的随筆,主要就是介紹給我們認識如何快速開發一個子產品,并且內建到系統架構裡面進行使用,我們甚至還沒有開始編碼,就已經給我們處理好很多細節上的東西,基本上就已經完成一個業務小子產品的展示工作了。

完成本文的前面兩個小節,不知道你們有沒有發現,我們好像還沒有真正的整合登陸的使用者資訊呢?在獨立的系統子產品開發過程中,我們如何整合登陸的使用者資訊呢?

我們重新回到開發的業務子產品的界面項目裡面看看原來的編輯界面代碼。

循序漸進開發WinForm項目(4)--Winform界面子產品的內建使用

這裡面對于儲存新增的資料,我們調整一下,把它的建立的人員和時間在代碼FrmEditCustomer.cs裡面調整成合理的代碼,記錄人員和目前時間。

其中紅色部分就是我們新增的内容,我在代碼裡面存儲目前登陸使用者的ID:LoginUserInfo.ID.ToString()。

這裡的LoginUserInfo是窗體基類的一個屬性,這個屬性通過兩種方式獲得,一個是通過使用者在調用窗體顯示前進行指定,一種是通過基類自動把緩存裡面的使用者對象指派。

如下面的代碼就是界面基類BaseForm的部分代碼。

這些使用者和功能的資訊來源于登陸主界面的時候,我們把它們進行了緩存,友善基類窗體進行擷取。

第二種方式指定目前使用者資訊的步驟,是通過基類窗體的InitFunction函數進行指定。

手工指定目前使用者資訊的調用代碼如下所示。

一般情況下,我們建議采用第一種,不用多餘的代碼進行設定指定,隻需要在登入的時候,把它放到緩存裡面即可,這樣界面基類執行個體化的時候,就會自動擷取使用者資訊了,這個操作類似于Web領域裡面的Session操作,隻要存儲/擷取的鍵值儲存一緻即可。

好了,我們前面說到,儲存的時候,是儲存目前使用者的ID資訊,那麼我們在清單展示的時候,預設就會展示使用者的ID資訊而已,得到的界面效果如下所示。

循序漸進開發WinForm項目(4)--Winform界面子產品的內建使用

我們為了更好展示内容,就需要對使用者ID的資料進行轉義。

由于DevExpress有這樣對每行記錄進行轉義的操作,我們在清單界面上添加一個轉義函數。

資料轉義函數裡面涉及到對權限系統子產品的引用(我們需要把ID轉義為FullName(使用者全名)),我們把權限子產品的DLL引用包含進來即可(因為權限管理子產品是所有界面子產品都可以使用的)。

然後在這個函數裡面對目前的Creator進行轉義。

然後複制檔案,重新運作主程式即可看到如下界面所示。

循序漸進開發WinForm項目(4)--Winform界面子產品的內建使用

至此,我們本小節已經完成了,登陸使用者資訊的記錄和轉義的操作了,當然我們系統子產品裡面,可能還有很多地方需要用到使用者資訊的或者角色資訊的,這個例子隻是一個抛磚引玉的操作。

 循序漸進開發WInform項目--系列文章導引: