我正在使用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"形状到"测试,我得到异常,"找不到对象名称。"有什么帮助吗?
答案 0 :(得分:1)
已经找到了我自己的问题的答案。在C#中,如果要使用形状名称指定形状对象,请使用:
IVisio.Shape test = GroupStall.Shapes["name"]
我发现这很奇怪,因为我无法在VBA,VBA中使用item方法按名称查找形状:
test = GroupStall.Shapes.Item("name")
希望这可以帮助其他任何使用C#开发visio的人。