Word Interop:ScrollIntoView在新打开的文档上失败

时间:2013-08-19 05:28:56

标签: .net ms-word office-interop

我正在打开Word文档(用户指南),遍历段落,直到找到我想要的那个,然后将窗口滚动到该段落(即“上下文”帮助。)

我遇到的问题是,当Word呈现新打开的文档时,ScrollIntoView方法似乎无法在短时间内执行任何操作。

代码摘录:

var wordDoc = wordApp.Documents.Open(ref filename, ref confirmConversions, ref readOnly, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref visible, ref missing, ref missing, ref missing, ref missing);
foreach (Microsoft.Office.Interop.Word.Paragraph paragraph in wordDoc.Paragraphs)
{
    var text = paragraph.Range.Text;
    if (text == headingToScrollTo + "\r")
    {
        wordDoc.ActiveWindow.ScrollIntoView(paragraph.Range);
        break;
    }
}

目前我在Thread.Sleep(500)方法调用之前插入了ScrollIntoView。显然这是一个非常可怕和脆弱的解决方案。在滚动之前等待文档完全呈现的正确方法会更好。

1 个答案:

答案 0 :(得分:0)

感谢KazJaw!而不是wordDoc.ActiveWindow.ScrollIntoView(paragraph.Range);使用paragraph.Range.Select();

之后我还向下滚动了45行,因为选择段落只会将其滚动到窗口底部的视图中。

paragraph.Range.Select();
object linesToScroll = 45;
wordDoc.ActiveWindow.SmallScroll(ref linesToScroll, ref missing, ref missing, ref missing);