2012-04-22 65 views
3

是否有任何第三方工具可用,它有两个richtextboxes,但只有一个共享滚动条。我需要用两种不同的语言实现一些文本,但是两个文本框应该同时滚动。两个richtextboxes的相同滚动条

+0

这不会解决您的问题吗? http://stackoverflow.com/questions/1827323/c-synchronize-scroll-position-of-two-richtextboxes – 2012-04-22 09:25:16

+0

我不想有两个文本框之间的同步,而是我想提供相同的滚动条 – 2012-04-22 09:30:13

回答

4
public enum ScrollBarType : uint 
    { 
     SbHorz = 0, 
     SbVert = 1, 
     SbCtl = 2, 
     SbBoth = 3 
    } 

    public enum Message : uint 
    { 
     WM_VSCROLL = 0x0115 
    } 

    public enum ScrollBarCommands : uint 
    { 
     SB_THUMBPOSITION = 4 
    } 

    [DllImport("User32.dll")] 
    public extern static int GetScrollPos(IntPtr hWnd, int nBar); 

    [DllImport("User32.dll")] 
    public extern static int SendMessage(IntPtr hWnd, uint msg, IntPtr wParam, IntPtr lParam); 
    // Set the dual scrolling on the richTextbox1 and affects richTextbox2 

    private void richTextBox1_VScroll(object sender, EventArgs e) 
    { 
     int nPos = GetScrollPos(richTextBox1.Handle, (int)ScrollBarType.SbVert); 
     nPos <<= 16; 
     uint wParam = (uint)ScrollBarCommands.SB_THUMBPOSITION | (uint)nPos; 
     SendMessage(richTextBox2.Handle, (int)Message.WM_VSCROLL, new IntPtr(wParam), new IntPtr(0)); 
    } 
+0

伟大...欢呼声... – 2012-06-27 08:22:53

+0

哇。它完全可以工作。很好的答案。 – 2016-01-12 08:47:10