最後,我們需要查看某個設備的時候,把它的下拉列表屬性值更新顯示即可(注意:上個步驟只是修改了數據庫的列表值,而沒有改變圖紙的)。
由於我們查看圖紙設備的時候,我們一定是選定了某個設備,那麼我們在選定操作裡面(響應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);
}
}
}
}
我們看到最後的結果如下
