在Visio VBA(或COM API)Visio頁面按名稱查找形狀無例外
如何在沒有找到形狀名稱時沒有預料到異常的形狀?
...在我的visio頁面中,可能有也可能不是名稱爲「DraftText」的矩形形狀。
我想檢查它是否存在,如果是的話,請不要。
我的代碼看起來像:
Shape waterMarkRect = page.Shapes["DraftText"];
if (waterMarkRect == null)
{
waterMarkRect = page.DrawRectangle(0, 0, 50, 15);
waterMarkRect.Name = "DraftText";
waterMarkRect.NameU = waterMarkRect.Name;
waterMarkRect.Text = "INCONSISTANT";
Layer wMarkLayer = page.Layers["WMark"] ?? page.Layers.Add("WMark");
wMarkLayer.Add(waterMarkRect, 0);
}
...
...
的問題是,如果形狀「DraftText」是不存在的,我得到一個COM異常。
如我反對使用try catch塊作爲編碼工具,
我正在尋找一種方法來把它如IDictionary.TryGetValue(,出)之前,檢查該形狀所有腦幹;
,或者(page.Shapes.Contain( 「DraftText」))...
什麼想法?
我猜這最有可能是可能的,你可能想要添加一個檢查異常是否被捕獲'catch(COMException ex){if(ex.ErrorCode!= 0x00000)throw;}'所以你不會錯過一個真正的例外 – 2012-07-31 06:48:37