c# 主窗体中添加了一个Panel和一个weifenluo的DockPanel

鼠标在这两个Panel中移动为什么不会触发主窗体的OnMouseMove方法?要想触发这个方法应该怎么做?... 鼠标在这两个Panel中移动为什么不会触发主窗体的OnMouseMove方法?要想触发这个方法应该怎么做? 展开
 我来答
狮是搞完泪18
推荐于2016-11-10 · TA获得超过270个赞
知道小有建树答主
回答量:257
采纳率:0%
帮助的人:259万
展开全部
因为WM_MOUSEMOVE这个消息被子控件处理完了,父控件会收到一个WM_COMMAND消息,表示自控件发生的MOUSEMOVE。如果你想让父控件处理同样的消息的话,可以在子控件里重写Wnproc函数,拦截到WM_MOUSEMOVE消息后,上抛到父控件那里去
class Mypanel : panel
{
[DllImport("user32.dll")]
private extern static int SendMessage(IntPtr hwnd, int msg, IntPtr wparam, IntPtr lparam);
const int WM_MOUSEMOVE = 0x0200;

protected override void WndProc(ref Message m)
{
base.WndProc(ref m);
//拦截WM_MOUSEMOVE消息
if (m.Msg == 0x0200)
{
//把这个消息上抛到父控件那里
SendMessage(this.Parent.Handle, m.Msg, m.WParam, m.LParam);
}
}
}
上抛的时候,最好是一个自定义的消息类型,不要使用原来的Message
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式