65.9K
CodeProject is changing. Read more.
Home

Synchronized RichTextBox objects (or how to scroll 2 RichTextBox objects together)

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.71/5 (7 votes)

May 20, 2011

CPOL
viewsIcon

26871

In this tip, I will show how to scroll two RichTextBox objects together

In my previous post (Synchronized ListBox objects (or how to scroll 2 ListBox objects together)[^]), I described how to create synchronized (or linked) ListBox and ListView objects. Now I continue investigation in this area and I have found another interesting example which describes synchronization of two RichTextBox objects. The first step is to create a class which derives from RichTextBox class.
public class SynchronizedScrollRichTextBox : System.Windows.Forms.RichTextBox
{
    public event vScrollEventHandler vScroll;
    public delegate void vScrollEventHandler(System.Windows.Forms.Message message);

    public const int WM_VSCROLL = 0x115;

    protected override void WndProc(ref System.Windows.Forms.Message msg)
    {
        if (msg.Msg == WM_VSCROLL)
        {
            if (vScroll != null)
            {
                vScroll(msg);
            }
        }
        base.WndProc(ref msg);
    }

    public void PubWndProc(ref System.Windows.Forms.Message msg)
    {
        base.WndProc(ref msg);
    }
}
I created two SynchronizedScrollRichTextBox controls and placed them on the form. Then, I added the following code (vScroll event):
private void synchronizedScrollRichTextBox1_vScroll(Message message)
{
    message.HWnd = synchronizedScrollRichTextBox2.Handle;
    synchronizedScrollRichTextBox2.PubWndProc(ref message);
}