开发者

Word: SyncScrollingSideBySide and ScrollIntoView

One feature of our Word add-in shows two document windows side-by-side. The user can double-click a paragraph in the left-hand document to scroll an associated paragraph in the right-hand document into view. When we do this, we want to re-enable Synchronous Scrolling if it was enabled before the double-click. We're doing something like this:

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;
    }
}

After doing this, the desired range is in view in the original (right-hand for our app) document, but as soon as you scroll either window, the right-hand window jumps back to its original position.

Things we've tried that didn't work:

  • Set the SyncScrollingSideBySide property on all of the Application 开发者_如何学Cwindows rather than just one of the two compare documents.
  • Toggle the property an additional time.

We've resorted to SendKeys to simulate a click on the Synchronous Scrolling button. (If you don't re-enable the sync programatically, then click the button yourself, the right-hand document doesn't jump back to its original position when you scroll). This isn't really an acceptable solution, though--it is inconsistent for example depending on whether our add-in's tab is active. Sometimes it works, sometimes it toggles the sync scrolling an additional time which will annoy the customer. Is there a better way?

Note: The issue occurs when the left-hand document is longer than the right-hand document (the one being scrolled).

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜