我们的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;
}
}
执行此操作后,所需范围显示在原始(我们的应用程序右侧)文档中,但是只要您滚动任一窗口,右侧窗口就会跳回到其原始位置。
我们尝试过的东西不起作用:
我们使用SendKeys来模拟同步滚动按钮上的单击。 (如果不以编程方式重新启用同步,则自行单击该按钮,滚动时右侧文档不会跳回原始位置)。这不是一个真正可以接受的解决方案 - 例如,它取决于我们的加载项选项卡是否处于活动状态是不一致的。有时它可以工作,有时它会使同步滚动切换额外的时间,这将惹恼客户。还有更好的方法吗?
注意:当左侧文档长于右侧文档(正在滚动的文档)时会出现问题。