C# Word:SyncScrollingSideBySide和ScrollingToView

C# Word:SyncScrollingSideBySide和ScrollingToView,c#,.net,ms-word,vsto,ms-office,C#,.net,Ms Word,Vsto,Ms Office,Word加载项的一个功能是并排显示两个文档窗口。用户可以双击左侧文档中的段落,将右侧文档中的关联段落滚动到视图中。执行此操作时,如果在双击之前启用了同步滚动,则希望重新启用同步滚动。我们正在做这样的事情: private void LineUpParagraphs() { // Unlock the views so we can scroll them independently. bool wasSyncEnabled = this.originalDocument.Docu

Word加载项的一个功能是并排显示两个文档窗口。用户可以双击左侧文档中的段落,将右侧文档中的关联段落滚动到视图中。执行此操作时,如果在双击之前启用了同步滚动,则希望重新启用同步滚动。我们正在做这样的事情:

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来模拟单击同步滚动按钮。(如果您没有通过编程重新启用同步,然后自己单击该按钮,则滚动时右侧文档不会跳回其原始位置)。不过,这并不是一个真正可以接受的解决方案——它是不一致的,例如,取决于外接程序的选项卡是否处于活动状态。有时它会工作,有时它会切换同步滚动一个额外的时间,这会惹恼客户。有更好的办法吗

注意:如果左侧文档比右侧文档(正在滚动的文档)长,则会出现此问题