Word:SyncScrollingSideBySide和ScrollIntoView

时间:2011-02-25 15:58:56

标签: c# .net ms-word vsto ms-office

我们的Word加载项的一个功能是并排显示两个文档窗口。用户可以双击左侧文档中的段落,将右侧文档中的相关段落滚动到视图中。当我们这样做时,如果在双击之前启用了Synchronous Scrolling,我们想要重新启用它。我们正在做这样的事情:

private void LineUpParagraphs()
{
    // Unlock the views so we can scroll them independently.
    bool wasSyncEnabled = this.originalDocument.Document.Windows.SyncScrollingSideBySide;
    this.originalDocument.Document.Windows.SyncScrollingSideBySide = false;

    // Scroll corresponding original paragraph into view.
    this.originalDocument.Document.Windows[1].ScrollIntoView(
        this.CurrentOriginalParagraph.Range);

    // Re-enable synchronous scrolling if it was enabled before.
    if (wasSyncEnabled)
    {
        this.originalDocument.Document.Windows.SyncScrollingSideBySide = true;
    }
}

执行此操作后,所需范围显示在原始(我们的应用程序右侧)文档中,但是只要您滚动任一窗口,右侧窗口就会跳回到其原始位置。

我们尝试过的东西不起作用:

  • 在所有应用程序窗口上设置SyncScrollingSideBySide属性,而不仅仅是两个比较文档中的一个。
  • 再次切换酒店。

我们使用SendKeys来模拟同步滚动按钮上的单击。 (如果不以编程方式重新启用同步,则自行单击该按钮,滚动时右侧文档不会跳回原始位置)。这不是一个真正可以接受的解决方案 - 例如,它取决于我们的加载项选项卡是否处于活动状态是不一致的。有时它可以工作,有时它会使同步滚动切换额外的时间,这将惹恼客户。还有更好的方法吗?

注意:当左侧文档长于右侧文档(正在滚动的文档)时会出现问题。

0 个答案:

没有答案