Visio:无法在组形状中找到形状

Visio: Cannot find shape in a group shape

我正在使用 Microsoft.Office.Interop.Visio 库将 vba 代码转移到 c#。我很难弄清楚为什么会出现 "Object name not found" 异常。代码如下:

foreach (IVisio.Shape t in GroupStall.Shapes)
                    {
                        Console.WriteLine(t.Name);
                    }
                    var aa = "door" + index;
                    IVisio.Shape test = GroupStall.Shapes.ItemU[aa];

我正在使用 for each 循环进行调试。在 foreach 的输出中是:

headrail2
headrail1
toilet1
toprail1
siderail1A
door1
stallwidth1

我已经知道 "door1" 存在于其中,所以我不需要总是通过 foreach 循环来将它分配给形状对象。但是当我开始将 "door1" 形状分配给 "test, I get the exception, " 未找到对象名称时。”关于为什么的任何帮助?

已经找到我自己问题的答案。在 C# 中,如果您想使用形状名称分配形状对象,您可以使用:

IVisio.Shape test = GroupStall.Shapes["name"]

我觉得这很奇怪,因为我无法在 VBA 中执行此操作,VBA 您必须使用 item 方法按名称查找形状:

test = GroupStall.Shapes.Item("name")

希望这对使用 C# 在 vi​​sio 中进行开发的其他人有所帮助。