Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/295.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/363.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#Word Interop,调用.Delete()方法时未删除某些形状_C#_Ms Word_Interop_Shape - Fatal编程技术网

C#Word Interop,调用.Delete()方法时未删除某些形状

C#Word Interop,调用.Delete()方法时未删除某些形状,c#,ms-word,interop,shape,C#,Ms Word,Interop,Shape,我通过Interop库在多个word文档中生成形状。 每个形状都有一个文本框,显示有关它的一些详细信息 与其在创建一个输出后关闭原始文档,然后在下一个输出时重新打开它,我希望在保存修改后清理创建的形状,以下是我用于创建然后清理形状的两种方法: static void DrawCable(double angle, int identifiant, WdColor couleur) { float origineX = 365; float orig

我通过Interop库在多个word文档中生成形状。 每个形状都有一个文本框,显示有关它的一些详细信息

与其在创建一个输出后关闭原始文档,然后在下一个输出时重新打开它,我希望在保存修改后清理创建的形状,以下是我用于创建然后清理形状的两种方法:

    static void DrawCable(double angle, int identifiant, WdColor couleur)
    {
        float origineX = 365;
        float origineY = 641;
        float extremiteX = (float)Math.Round(origineX + 130 * Math.Cos(angle));
        float extremiteY = (float)Math.Round(origineY - 130 * Math.Sin(angle));

        Shape line = oDoc.Shapes.AddLine(origineX, origineY, extremiteX, extremiteY, ref oMissing);

        Shape etiquette = oDoc.Shapes.AddShape(1, (float)Math.Round(extremiteX - 7 - 7 * Math.Cos(angle) ), (float)Math.Round(extremiteY - 5 + 5 * Math.Sin(angle)), 15, 11, ref oMissing);

        etiquette.TextFrame.TextRange.Text = identifiant.ToString();

    }

    static void CleanDocument()
    {
        foreach (Shape shp in oDoc.Shapes)
            shp.Delete();

    }
每当我运行代码时,例如

       for (int multiplier = 0; multiplier < 4; multiplier++  )
        {
            Program.DrawCable(Math.PI * multiplier / 2, multiplier, WdColor.wdColorRed);
        }
所有形状都已列出,但只要我添加shp.Delete()行,文本框就不再显示为集合的成员(即它们不再显示在文本输出中)


任何帮助都将不胜感激。

删除呼叫正在更改收藏。如果对.NET集合执行此操作,则通常会出现InvalidOperationException,“集合已更改”异常。但对于单词集合,您可能只看到删除了第1、第3、第5等形状。考虑用一个正常的循环来迭代集合来避免这个bug。谢谢汉斯,它起作用了!Delete调用正在更改集合。如果对.NET集合执行此操作,则通常会出现InvalidOperationException,“集合已更改”异常。但对于单词集合,您可能只看到删除了第1、第3、第5等形状。考虑用一个正常的循环来迭代集合来避免这个bug。谢谢汉斯,它起作用了!
static void CleanDocument()
{
    foreach (Shape shp in oDoc.Shapes)
        Console.WriteLine( shp.ID + "\t" + shp.Type.ToString() );

}