Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Visio:在组形状中找不到形状_C#_Vba_Visio - Fatal编程技术网

C# Visio:在组形状中找不到形状

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

我正在使用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循环将其分配给一个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中指定任何对象引用所需的
设置
关键字。