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

Visio 二次開發:動態管理 Shape 下拉選單(固定與可變清單)

     編輯:關於C#

Visio Shape 的自訂屬性支援多種資料類型,其中 固定清單 與 可變清單 對應 .NET 的 ComboBox.DropDownStyle 為 DropDownList 與 DropDown。本文示範如何透過資料庫動態維護這兩類下拉選單。

屬性類型對照

值常數說明
0visPropTypeString字串(預設)
1visPropTypeListFix固定清單,僅可選擇
2visPropTypeNumber數值/日期/貨幣
3visPropTypeBool布林值
4visPropTypeListVar可變清單,可輸入新值
5visPropTypeDate日期時間
6visPropTypeDuration持續時間
7visPropTypeCurrency貨幣

固定清單:直接寫入 Format 公式

格式為分號分隔字串,如 "專用;公用":

targetShape.get_CellsU("Prop." + propName + ".Format").FormulaU = "\"專用;公用\"";

可變清單:資料庫驅動的動態管理

資料庫設計

  • DropdownListField:登記哪些欄位屬於可變清單類型。
  • DropdownListValue:儲存各欄位的可選選項值。

同步流程

  1. 新增/修改模具屬性時,若類型為 visPropTypeListVar 且未登記,自動寫入 DropdownListField。
  2. 管理介面維護 DropdownListValue 的選項資料。
  3. 使用者選取 Shape 時(SelectionChanged 事件),即時將資料庫選項同步至 Shape 的 Format 公式。

核心同步程式碼

public void UpdateDropdownListValue(Visio.Shape targetShape) {
    var properties = propertyVOL.GetPropertyCollection(targetShape);
    foreach (var prop in properties) {
        if (prop.PropType == PropType.visPropTypeListVar) {
            string formatValue = dropdownDAL.GetDrpFieldValue(prop.DeviceName, prop.Name);
            if (!string.IsNullOrEmpty(formatValue)) {
                targetShape.get_CellsU("Prop." + prop.Name + ".Format").FormulaU 
                    = VisioUtility.StringToFormulaForString(formatValue);
            }
        }
    }
}

此架構實現「資料庫為主、圖形為從」的下拉選單治理,適合設備廠商、資產歸屬等頻繁變動的業務場景。

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