<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      傳統Winform系統的轉小程序化設想

      大型企業往往有一個或幾個核心系統, 為了保證核心系統的穩定, 很少直接在核心系統內部添加新功能, 而是采用外掛形式增加新功能. 在傳統企業內部, 這些外掛系統往往是一些Windows桌面系統, 這些外掛系統從源碼角度看, 都很類似, 有著相同的用戶登錄驗證, 相同的權限管控方式,相同的后臺數據庫, 但因為各種原因, 它們并沒沒有被很好地規劃, 比如缺少統一的UI設計,邏輯類似但項目代碼沒有被很好的組織, 相同的代碼不斷地被復制粘貼, 維護成本越來越高.

      這里給出一個解決方案: 建立桌面版的小程序體系, 示意圖見下.

      原先是在核心系統中直接打開某個外掛系統, 將來轉變為先打開小程序容器程序, 并由小程序容器動態加載這個外掛模塊.

       

       

       

       改造內容:

      1. 把各個外掛系統通用功能移到小程序容器系統中, 比如登錄和權限驗證等.

      2.將外掛系統退化成外掛功能模塊, 為了減少改造成本, 這些外掛模塊仍以C#項目形式存在, 只是轉換成dll類庫系統. 備注:C#的dll項目是可以包含Form窗體的.

       

      改造收益:

      1. 統一了UI風格, 更好的使用體驗.

      2.將多個源碼solution合并到一個源碼solution中, 代碼復用性會更好, 源碼管理成本會大大降低,將來功能升級也更容易.

       

      實現方式:

      采用著名的開源WinForm控件 DockPanelSuite, 使用DockPanel作為外掛模塊的容器, 改造難度非常小. 下面簡單介紹具體做法.

       

      外掛項目:

      ⒈外掛項目轉成dll類庫項目形態, 其實也可以是獨立的Exe程序, 但如果是Exe的化, 容易繞過容器程序.

      2. 外掛項目增加Dock panel suite 引用

      3. 對于外掛項目主界面或需要被核心系統直接調出的界面, 將其基類從 Form 轉成 DockPanelSuite 中的 DockContent 類, DockContent 類其實也是 Form 類的子類, 最好是定制化一個統一的 DockContent 類, 比如 DockableForm, 統一所有外掛模塊的樣式.

      4. 下面是 DockContent 類的一些擴展屬性和方法

        (1) AllowEndUserDocking 屬性: 是否允許最終用戶調整 Dock 方式

        (2) AllowEndUserNestedDocking 屬性: 是否允許最終用戶來嵌套Dock

        (3) TabText 屬性 : 設置 Tab 頁簽的 header 文本

        (4) DockAreas 屬性: 子窗體可以被dock到的位置, 比如 上/下/左/右等

        (5) HideOnClose 屬性, 設置為 True 時, 關閉子窗體其實僅僅是隱藏

        (6) CloseButton, bool 屬性, 是否可以關閉 tab 頁簽

        (7) CloseButtonVisible 屬性, pane 上的 close button 是否可見.

        (8) DockHandler 屬性, 其實可以將 DockContent 類認為是 Form + DockHandler, 也就是 DockContent 擴展的屬性和方法都是來源于 DockHandler 類

        (9) Show() 方法, 通過該方法, 可以將子窗體 dock 到父窗體的 DockPanel 控件上, 可以設置 dock 過去的位置, 上下左右等等.

       

      容器項目:

      1. 將主窗體 IsMdiContainer 屬性設置為 true.  DockPanelSuite 底層機制和傳統的 MDI 應用類似, 所以 MDI 應用的一些方式, 也適用于dockPanel 容器窗體, 比如 mainForm.MdiChildren, mainForm.ActiveMdiChild 等.

      2. 增加一個 dock panel 控件

      3. 設置 dockPanel 組件的一些重要屬性

        (1) DocumentStyle 屬性,

              DockingSdi: 當只有一個頁簽時候, 不顯示該頁簽的header.

              DockingMdi, 默認的mdi 模式,

              SystemMdi: 不推薦使用, 這種方式下最大程度地模擬傳統的MDI應用, , 很多處理機制和 dockPanel 其他模式不同.

        (2) ShowDocumentIcon, 頁簽是否顯示圖標

        (3) DocumentTabStripLocation, top/buttom, 頁簽實現在上方還是下方

        (4) DocArea, 只讀屬性, 真正用于裝載子窗體的區域, 如果太小, 子窗體可能顯示不全. 

        (5) Documents 屬性, 所有子窗體的清單.

       

      posted @ 2021-06-20 16:58  harrychinese  閱讀(179)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 政和县| 虎白女粉嫩尤物福利视频| 欧美高清精品一区二区| 亚洲一区二区精品偷拍| 精品无码国产一区二区三区AV| 国产在线亚州精品内射| 静宁县| 欧美人人妻人人澡人人尤物| 2021AV在线无码最新| 图木舒克市| 西西444www高清大胆| 国语自产拍精品香蕉在线播放| 亚洲av永久无码精品漫画| 日韩少妇人妻vs中文字幕| 精品国产免费一区二区三区香蕉 | 岛国岛国免费v片在线观看| 后入内射无码人妻一区| 麻豆一区二区三区香蕉视频 | 蜜臀精品一区二区三区四区 | 日产精品99久久久久久| 连云港市| 三人成全免费观看电视剧高清| 无码人妻h动漫| 在国产线视频A在线视频| 日韩人妻av一区二区三区| 国内精品久久久久影院日本| 国产伦精品一区二区亚洲| 东京热人妻无码一区二区av| 无码人妻精品一区二区在线视频| 黄色亚洲一区二区在线观看| 中文国产不卡一区二区| 国产成人久久777777| 免费国产精品视频在线| 国产日韩精品秘 入口| 精品国产免费一区二区三区香蕉| 久久成人成狠狠爱综合网| 亚洲综合一区二区三区| 日韩黄色av一区二区三区| 亚洲av无在线播放中文| 国语对白做受xxxxx在线中国| 手机看片福利一区二区三区 |