Visio VBA (または COM API) の場合
形状名が見つからない場合に例外を期待せずに形状を取得するにはどうすればよいですか?
... 私の visio ページには、"DraftText" という名前の Rectangle Shape がある場合とない場合があります。
私はそれがそこにあることを確認したいと思います。
私のコードは次のようです:
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"))...
何か案は?