sxl_88
2015-04-08 12:26
采纳率: 50%
浏览 3.3k
已采纳

c# winfrom项目,如何实现在form窗体中点击鼠标右键自动关闭该窗体

在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窗体自动关闭。

请各位帮忙看看,有没有相关的解决办法。谢谢!

  • 写回答
  • 好问题 提建议
  • 关注问题
  • 收藏
  • 邀请回答

4条回答 默认 最新

  • bdmh 2015-04-08 12:37
    已采纳

    你直接搜 c# 消息捕获 或者 消息过滤器 就能查到

    已采纳该答案
    评论
    解决 无用
    打赏 举报
  • bdmh 2015-04-08 12:31

    你直接拦截消息好了,那样不管啥气候都能有效,可以重载wndproc,也可以使用消息过滤器

    评论
    解决 无用
    打赏 举报
  • sxl_88 2015-04-08 12:35

    有没有这方面的参考文档,谢谢。

    评论
    解决 无用
    打赏 举报
  • threenewbee 2015-04-08 19:37
     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); 
    }
    
    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题