Visio:无法找到组形状的形状

时间:2017-10-25 14:53:52

标签: c# vba visio

我正在使用Microsoft.Office.Interop.Visio库将vba代码转移到c#。我很难搞清楚为什么我找不到"找不到对象名称"例外。代码如下:

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"形状到"测试,我得到异常,"找不到对象名称。"有什么帮助吗?

1 个答案:

答案 0 :(得分:1)

已经找到了我自己的问题的答案。在C#中,如果要使用形状名称指定形状对象,请使用:

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

我发现这很奇怪,因为我无法在VBA,VBA中使用item方法按名称查找形状:

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

希望这可以帮助其他任何使用C#开发visio的人。