在 Visio VBA(或 COM API)中
当找不到形状名称时,如何在不期望异常的情况下获得形状?
...在我的 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(, out);
或 if(page.Shapes.Contain("DraftText"))...
有任何想法吗?