Visio Shape 的自訂屬性支援多種資料類型,其中 固定清單 與 可變清單 對應 .NET 的 ComboBox.DropDownStyle 為 DropDownList 與 DropDown。本文示範如何透過資料庫動態維護這兩類下拉選單。
| 值 | 常數 | 說明 |
|---|---|---|
| 0 | visPropTypeString | 字串(預設) |
| 1 | visPropTypeListFix | 固定清單,僅可選擇 |
| 2 | visPropTypeNumber | 數值/日期/貨幣 |
| 3 | visPropTypeBool | 布林值 |
| 4 | visPropTypeListVar | 可變清單,可輸入新值 |
| 5 | visPropTypeDate | 日期時間 |
| 6 | visPropTypeDuration | 持續時間 |
| 7 | visPropTypeCurrency | 貨幣 |
格式為分號分隔字串,如 "專用;公用":
targetShape.get_CellsU("Prop." + propName + ".Format").FormulaU = "\"專用;公用\"";
visPropTypeListVar 且未登記,自動寫入 DropdownListField。DropdownListValue 的選項資料。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);
}
}
}
}
此架構實現「資料庫為主、圖形為從」的下拉選單治理,適合設備廠商、資產歸屬等頻繁變動的業務場景。