某人的博客

一路疯驰(沪ICP备15037456号-1)

博客搜索:

winform 控件消息转发

作者:Jason Yang 分类:软件开发 浏览:

场景,Panel中放置了自定义控件,控件中包含了listbox,导致当鼠标放在listbox上的 时候,鼠标滚轮无法滚动panel。

处理方式:基于ListBox扩展一个控件,然后捕获系统消息,如果是鼠标滚动,就将消息转发给外层的panel进行响应。


        [DllImport("User32.DLL")]

        private static extern int SendMessage(IntPtr hWnd, uint Msg, IntPtr wParam, IntPtr lParam);


        protected override void WndProc(ref Message m)

        {

            switch (m.Msg)

            {

                case 0x020a: //鼠标滚轮滚动

                case 0x0207://按下鼠标滚轮

                case 0x0208://释放鼠标滚轮

                    if (ScrollEnable)

                    {

                        base.WndProc(ref m);

                    }

                    else

                    {

                        SendMessage(this.Parent.Parent.Parent.Handle,(uint) m.Msg, m.WParam, m.LParam);

                    }

                    break;

                default:

                    base.WndProc(ref m);

                    //base.DefWndProc(ref m);//调用基类函数处理非自定义消息。

                    break;

            }

        }


L最新评论

P发布评论