public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
this.button1.MouseEnter += new EventHandler((object ob, EventArgs args) => { ButtonID = "button1"; });
this.button2.MouseEnter += new EventHandler((object ob, EventArgs args) => { ButtonID = "button2"; });
}
string ButtonID = "";
const int WM_MOUSEDOWN = 0x0210;
protected override void DefWndProc(ref Message m)//可按此方法在重写的消息过程中截获按钮事件
{
switch(m.Msg)
{
case WM_MOUSEDOWN:
{
if (ButtonID == "button1")
{
Task.Factory.StartNew(() => {
MessageBox.Show("button1");
});
}
else if (ButtonID == "button2")
{
Task.Factory.StartNew(() => {
MessageBox.Show("button2");
});
}
break;
}
}
base.DefWndProc(ref m);
}
public override bool PreProcessMessage(ref Message msg)//未知原因无效
{
switch(msg.Msg)
{
case WM_MOUSEDOWN:
{
return true;//
}
}
return base.PreProcessMessage(ref msg);
}
protected override void OnMouseDown(MouseEventArgs e)//只对本控件中的消息有效,子控件的消息无效
{
switch(e.Button.ToString())
{
case "button1":
{
break;
}
}
base.OnMouseDown(e);
}
}