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

时间:2017-09-27 15:36:39

标签: c# ms-word interop shape

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

不是在创建一个输出后关闭原始文档,而是为下一个输出重新打开它我想清理保存修改后创建的形状,在我用来创建的两个方法下面然后清理形状: / p>

    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);
        }

所有线条形状都被删除得很好但不是“文本框”形状(即使在技术上它们是自动形状 - 对于文本框也是如此)。 我测试了添加输出以查看Shapes集合的内容:

static void CleanDocument()
{
    foreach (Shape shp in oDoc.Shapes)
        Console.WriteLine( shp.ID + "\t" + shp.Type.ToString() );

}

列出了所有形状但是只要我添加shp.Delete()行,Textbox就不再是该集合的成员(即它们不再出现在文本输出中)。

任何帮助都将不胜感激。

0 个答案:

没有答案