此处以继承RichTextBox为例。简单来说就是截获windows的WM_MOUSEWHEEL消息,并将消息内容发送给父控件。
1.自定义控件,继承RichTextBox。
2.重写WndProc函数。
[DllImport("User32.dll", CharSet = CharSet.Auto, EntryPoint = "SendMessage")] static extern IntPtr SendMessage(IntPtr hWnd, uint Msg, IntPtr wParam, IntPtr lParam); protected override void WndProc(ref Message m) { //WM_MOUSEWHEEL if (m.Msg == 0x020A) { //只针对父控件是Panel的情况 if (this.Parent is Panel) { //将消息发送给父控件 SendMessage(((Panel)this.Parent).Handle, 0x020A, m.WParam, m.LParam); //直接返回,让OnMouseWheel洗洗睡吧 return; } } base.WndProc(ref m); }