C# Visio:在组形状中找不到形状
我正在使用Microsoft.Office.Interop.Visio库将vba代码传输到c#。我很难弄清楚为什么会出现“未找到对象名”异常。代码如下:C# Visio:在组形状中找不到形状,c#,vba,visio,C#,Vba,Visio,我正在使用Microsoft.Office.Interop.Visio库将vba代码传输到c#。我很难弄清楚为什么会出现“未找到对象名”异常。代码如下: foreach (IVisio.Shape t in GroupStall.Shapes) { Console.WriteLine(t.Name); } var aa = "do
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循环将其分配给一个shape对象。但是,当我将“door1”形状指定给“test”时,我得到了一个例外,“Object name not found”。关于原因的任何帮助?已经找到了我自己问题的答案。在C中,如果要使用形状名称指定形状对象,请使用:
IVisio.Shape test = GroupStall.Shapes["name"]
我发现这很奇怪,因为我无法在VBA中执行此操作,VBA您必须使用item方法按名称查找形状:
test = GroupStall.Shapes.Item("name")
希望这能帮助其他在visio中使用C#进行开发的人。您认为您的C#索引器正在调用哪个成员?没错,一些
get#u Item
方法。另外,如果Shapes
是一个集合类,按照惯例,它的Item
属性应该是它的默认成员,意思是Set test=GroupStall.Shapes(“name”)
应该有效。请注意VBA中指定任何对象引用所需的设置
关键字。