In Visio VBA (oder COM API)Visio Seite Shapes suchen nach Namen, ohne Ausnahmen
Wie kann ich eine Form erhalten, ohne eine Ausnahme zu erwarten, wenn die Form Name nicht gefunden wird?
... in meiner Visio-Seite möglicherweise eine Rechteckform mit dem Namen "DraftText".
Ich möchte überprüfen, ob es da ist und wenn ja, mach etw.
mein Code scheint wie:
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);
}
...
...
Das Problem ist, dass, wenn die Form "DraftText" nicht da ist, ich eine COM-Ausnahme erhalten.
wie ich bin gegen die Verwendung von try catch-Block als Codierungs Dienstprogramm,
i für eine Art und Weise bin für die Form existance zu überprüfen, bevor es zu nehmen, wie IDictionary.TryGetValue (, out);
oder wenn (page.Shapes.Contain ("DraftText")) ...
Irgendwelche Ideen?
Ich vermute, dass dies am wahrscheinlichsten ist, was möglich ist. Vielleicht möchten Sie eine Überprüfung hinzufügen, welche Exception gefangen wurde? Catch (COMException ex) {if (ex.ErrorCode! = 0x00000) throw;} 'damit Sie kein True verpassen Ausnahme –