29 lines
852 B
C#
29 lines
852 B
C#
using System;
|
|
using System.Windows.Forms;
|
|
using System.Runtime.InteropServices;
|
|
|
|
class SyncTextBox : RichTextBox
|
|
{
|
|
public SyncTextBox()
|
|
{
|
|
this.Multiline = true;
|
|
this.ScrollBars = System.Windows.Forms.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);
|
|
} |