最後,我們需要查看某個設備的時候,把它的下拉列表屬性值更新顯示即可(注意:上個步驟只是修改了數據庫的列表值,而沒有改變圖紙的)。
由於我們查看圖紙設備的時候,我們一定是選定了某個設備,那麼我們在選定操作裡面(響應Visio DrawingControl控件的SelectionChanged事件)更新圖紙設備的列表字段就可以了,更新下拉列表的操作其實就是遍歷所有的屬性,對是可變列表的屬性修改其列表值即可。
if (VisWindow.Selection.Count > 0) { Shape shapeSelected = VisWindow.Selection.get_Item16(1); //只更新選定的第一個設備的下拉列表,這樣速度不會很慢 dropdownBLL.UpdateDropdownListValue(shapeSelected); } /**//// <summary> /// 更新Shape下拉列表的值 /// </summary> public void UpdateDropdownListValue(Visio.Shape targetShape) { string fieldId = string.Empty; string strFormatVlaue = string.Empty; List<StencilPropertyInfo> properties= propertyVOL.GetPropertyCollection(targetShape); foreach (StencilPropertyInfo entity in properties) { if (entity.PropType == PropType.visPropTypeListVar) { strFormatVlaue = dropdownDAL.GetDrpFIEldVlaue(entity.DeviceName, entity.Name); if (!string.IsNullOrEmpty(strFormatVlaue)) { targetShape.get_CellsU("Prop." + entity.Name +".Format").FormulaU = VisioUtility.StringToFormulaForString(strFormatVlaue); } } } }
我們看到最後的結果如下