在C# Winfrom项目中,两个form窗体(form1、form2),
在form1窗体中有个Button控件(实现点击该按钮弹出form2窗体)。
在form2窗体中包括有一个Panel控件,在Panel控件中放置一个Label控件以及三个Button控件(button1、button2以及button3)。
目前遇到点困难:
如果用户鼠标点击在了form2窗体中,用户再点击鼠标右键,可以响应form2窗体的鼠标右键事件,使form2窗体自动关闭。
如果用户鼠标点击了form2窗体中的button1、button2、button3按钮后,用户再点击鼠标右键,就无法响应form2窗体的鼠标右键事件(无法关闭form2窗体)。
请问怎么样实现鼠标的焦点在form2窗体中的button1、button2、button3按钮后,如何响应form2窗体的鼠标右键事件,使form2窗体自动关闭。
请各位帮忙看看,有没有相关的解决办法。谢谢!
你直接搜 c# 消息捕获 或者 消息过滤器 就能查到
你直接拦截消息好了,那样不管啥气候都能有效,可以重载wndproc,也可以使用消息过滤器
有没有这方面的参考文档,谢谢。
private const int WM_RBUTTONDOWN = 0x0204;
protected override void WndProc(ref Message m)
{
const int WM_SYSCOMMAND = 0x0112;
const int SC_CLOSE = 0xF060;
if (m.Msg == WM_RBUTTONDOWN)
{
//... 关闭窗口
}
base.WndProc(ref m);
}