using System; using System.Windows.Forms; using System.Runtime.InteropServices; class SyncTextBox : RichTextBox { public SyncTextBox() { this.Multiline = true; this.ScrollBars = RichTextBoxScrollBars.Vertical; } public Control Buddy { get; set; } private static bool scrolling; // In case buddy tries to scroll us protected override void WndProc(ref Message m) { base.WndProc(ref m); // Trap WM_VSCROLL message and pass to buddy if ((m.Msg == 0x115 || m.Msg == 0x20a) && !scrolling && Buddy != null && Buddy.IsHandleCreated) { scrolling = true; SendMessage(Buddy.Handle, m.Msg, m.WParam, m.LParam); scrolling = false; } } [DllImport("user32.dll", CharSet = CharSet.Auto)] private static extern IntPtr SendMessage(IntPtr hWnd, int msg, IntPtr wp, IntPtr lp); }