首页 > 开发 > 综合 > 正文

Winform中在Form上截取消息的两种方法

2024-07-21 02:24:52
字体:
来源:转载
供稿:网友

  比较常用的是重载form的defwndproc方法,例如截取鼠标按下的消息:

protected override void defwndproc(ref message m)
        {
            if ( m.msg ==  0x0201 )
            {
                messagebox.show(m.msg.tostring());
            }
            else
            {
                base.defwndproc (ref m);
            }
        }

  还可以通过另一种办法,使用imessagefilter 接口:

public class messagefilter : imessagefilter
    {
                public bool prefiltermessage(ref message m)
               {
                        if (m.msg == 0x0201)
                       {
                                messagebox.show("wm_lbuttondown is: " + m.msg);
                               return true;
                       }
                       return false;
        }

    }

  然后使用application.addmessagefilter方法,例如:

private static messagefilter msgfliter = new messagefilter();

  在main方法中注册消息筛选器:

application.addmessagefilter(msgfliter);

  如果要取消注册,可以调用application.removemessagefilter方法

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表