无法遍历Shapes集合

时间:2010-12-27 14:03:01

标签: ms-word interop vsto

C#和word interop, 我有一个带有一些文本框(msoTextBox形状)的word文档,我无法使用下面的代码遍历形状集合的问题:

foreach (Shape shape in WordDocument.Shapes)
        {}

虽然在循环行中设置断点时我可以看到WordDocument.Shapes.Count返回4.

我注意到使用open xml sdk插入了文本框。

3 个答案:

答案 0 :(得分:2)

我发现使用文本框时会出现问题。看一下这个solution

答案 1 :(得分:0)

来自Code Project

    // Get the word count from all shapes
    foreach (Word.Shape shape in wordDocument.Shapes)
    {
        if (shape.TextFrame.HasText < 0)
        {
            count+=GetCountFromRange(shape.TextFrame.TextRange,wordDocument,word);
        }
    }

根据你的说法,你看起来就是做对了。

你能给我们Error StackTrace吗?

PS:我知道我的问题应该在评论中,但它不可读:)

答案 2 :(得分:0)

所以

替换:

foreach (Shape shape in WordDocument.Shapes)
   {
   }

通过:

     foreach (Range rangeStory in WordDocument.StoryRanges)
     {
        foreach (Shape shape in rangeStory.ShapeRange)
        {

        }
     }

工作完美。