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






4.71/5 (7 votes)
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);
}