首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> C# >> 關於C#

Visio 二次開發框架設計:WinForm 介面佈局與分層架構最佳實踐

     編輯:關於C#

成熟的 Visio 增益集需要專業的 UI 佈局與清晰的分層架構。本文分享實戰專案的介面設計細節(ToolStripPanel + DockPanel Suite)與四層架構(UI/BLL/DAL/Entity),並展示關鍵功能模組的程式碼片段。

UI 介面架構

  • 頂層:MenuStrip + 多組 ToolStrip,置於 ToolStripPanel 實現停駐/拖曳排列。
  • 中層:WeifenLuo.WinFormsUI.Docking (DockPanel Suite) 管理文件視窗(Visio 控制項)與工具視窗(屬性、圖層、搜尋等),支援浮動、分頁、自動隱藏。
  • 底層:StatusStrip 顯示座標、縮放比、選取物件資訊。

核心功能模組程式碼片段

另存為 Visio / 匯出 DWG


// 另存為 VSD
SaveFileDialog dlg = new SaveFileDialog();
dlg.Filter = "Visio檔案(*.vsd)|*.vsd|所有檔案(*.*)|*.*";
dlg.FileName = Portal.gc.gVisioImage.VisioName;
if (dlg.ShowDialog() == DialogResult.OK && !string.IsNullOrEmpty(dlg.FileName)) {
    File.Copy(Portal.gc.gVisioTemplateFilePath, dlg.FileName, true);
}

// 匯出 DWG
dlg.Filter = "AutoCAD 繪圖 (*.dwg)|*.dwg|所有檔案(*.*)|*.*";
dlg.FileName = "";
if (dlg.ShowDialog() == DialogResult.OK && !string.IsNullOrEmpty(dlg.FileName)) {
    VisApplication.ActivePage.Export(dlg.FileName);
}

視窗顯示控制(標尺、網格、形狀窗、屬性窗)


// 透過 DoCmd 執行內建命令
VisApplication.DoCmd((short)VisUICmds.visCmdViewRulers);     // 標尺
VisApplication.DoCmd((short)VisUICmds.visCmdViewGrid);       // 網格
VisApplication.DoCmd((short)VisUICmds.visCmdCustProp);       // 自訂屬性視窗
VisApplication.DoCmd((short)VisUICmds.visCmdShapesWindow);   // 形狀視窗
VisApplication.DoCmd((short)VisUICmds.visCmdPanZoom);        // 掃視縮放

所有命令 ID 定義於 VisUICmds 列舉,涵蓋 200+ 內建功能。

縮放操作委派

詳細實作見「圖紙縮放操作實作」一文,菜單與工具列下拉框共用 SetZoom(string) 方法,支援預設比例與自訂百分比。

分層架構設計


[UI Layer] 
  ├─ DockingControl (WeifenLuo DockPanel)
  ├─ VisioOCX (AxVisOcx)
  ├─ Menu/Toolbar/StatusBar
  
[Business Layer] 
  ├─ PowerCutBLL (停電分析)
  ├─ DeviceBLL (設備管理)
  ├─ StencilBLL (模具管理)
  └─ OperationLogBLL (操作日誌)

[DAL Layer] 
  ├─ Enterprise Library Data Access Block
  ├─ DeviceDAL, VisioImageDAL, LogDAL...
  └─ Stored Procedure 封裝

[Entity Layer] 
  ├─ DeviceInfo, ShapeLogInfo, StencilPropertyInfo...
  └─ 所有層共用 DTO

關鍵架構決策:訪問邊界

DAL 僅存取資料庫,不碰 Visio 物件;Visio 操作層僅存取 Visio 物件,不直連資料庫。兩者由 BLL 協調,共享 Entity 物件。

  • 降低耦合,便於單元測試與 Mock。
  • DAL 使用 Enterprise Library 簡化 ADO.NET 模板代碼。
  • Visio 操作集中在 Utility/Service 類別,避免 UI 程式碼散亂。

此架構支撐超過 5 萬行程式碼的專案穩定運行多年,是中大型 Visio 增益集的參考範本。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved