Winforms 如何设置富文本框控件的滚动位置?

Winforms 如何设置富文本框控件的滚动位置?,winforms,position,scrollbar,richtextbox,Winforms,Position,Scrollbar,Richtextbox,我在winforms 4上使用了两个富文本框(customRTB1和customRTB2)。 两个rtb都有相同的文本。 我想要实现的是,当一个rtb(customRTB1)向下滚动时,另一个rtb(customRTB2)也应该滚动到与customRTB1完全相同的位置。 我试图这样做: public class CustomRTB : RichTextBox { #region API Stuff [DllImport("user32.dll", Cha

我在winforms 4上使用了两个富文本框(customRTB1和customRTB2)。 两个rtb都有相同的文本。 我想要实现的是,当一个rtb(customRTB1)向下滚动时,另一个rtb(customRTB2)也应该滚动到与customRTB1完全相同的位置。 我试图这样做:

public class CustomRTB : RichTextBox
    {
        #region API Stuff
        [DllImport("user32.dll", CharSet = CharSet.Auto)]
        public static extern int GetScrollPos(IntPtr hWnd, int nBar);

        [DllImport("user32.dll")]
        public static extern int SetScrollPos(IntPtr hWnd, int nBar, int nPos, bool bRedraw);

        private const int SB_HORZ = 0x0;
        private const int SB_VERT = 0x1;
        #endregion
        public int HorizontalPosition
        {
            get { return GetScrollPos((IntPtr)this.Handle, SB_HORZ); }
            set { SetScrollPos((IntPtr)this.Handle, SB_HORZ, value, true); }
        }

        public int VerticalPosition
        {
            get { return GetScrollPos((IntPtr)this.Handle, SB_VERT); }
            set { SetScrollPos((IntPtr)this.Handle, SB_VERT, value, true); }
        }
    }
使用HorizontalPosition和VerticalPosition,我可以按如下方式移动第二个rtb的滚动条:

private void customRTB1_VScroll(object sender, EventArgs e)
{
          customRTB2.VerticalPosition = customRTB1.VerticalPosition;
}
这会将第二个rtb的滚动条移动到第一个rtb的位置,但根本不会移动文本! 那么,如何使第二个rtb根据滚动条的位置显示相应的文本呢? 主要是,我希望第一个rtb的每一个活动(编辑、滚动等)都在第二个rtb上重复。 我知道我非常接近解决方案。
请帮忙。

我想[这个][1]可以解决你的问题。[1] 当前位置谢谢汤姆你解决了我的问题。我想创建我自己的演示(PPT类型)应用程序。一个表单有一个rtb1,它和我自己的笔记一起显示在我的笔记本电脑上。另一个表单显示在扩展(双)监视器上,它只显示rtb2。但我希望第二个rtb显示与rtb1完全相同的东西,我可以看到。你让我的生活轻松,让我开心。上帝保佑你!还有一个小问题。如果我使用rtb1的滚动条,它也会移动rtb2的滚动条。但如果我在rtb1中单击“向下翻页”按钮,则它不会滚动rtb2。这是非常重要的。我能做什么?当我单击page down按钮,然后单击rtb1的滚动条时,它会反映在rtb2中。怎么办?我想[这个][1]可以解决你的问题。[1] 当前位置谢谢汤姆你解决了我的问题。我想创建我自己的演示(PPT类型)应用程序。一个表单有一个rtb1,它和我自己的笔记一起显示在我的笔记本电脑上。另一个表单显示在扩展(双)监视器上,它只显示rtb2。但我希望第二个rtb显示与rtb1完全相同的东西,我可以看到。你让我的生活轻松,让我开心。上帝保佑你!还有一个小问题。如果我使用rtb1的滚动条,它也会移动rtb2的滚动条。但如果我在rtb1中单击“向下翻页”按钮,则它不会滚动rtb2。这是非常重要的。我能做什么?当我单击page down按钮,然后单击rtb1的滚动条时,它会反映在rtb2中。怎么办?