在form类中InitializeComponent(); 后添加代码:
Application.AddMessageFilter(this);
form类中添加方法:类中添加方法:
bool IMessageFilter.PreFilterMessage(ref Message m)
{
if (m.Msg == 0x201)
{
Control C = GetControl(this);
if (C != null)
if (C.Parent == null || C.Parent.Name != "panelMenu")//筛选控件C,并设置点击事件要做的事
{
//c筛选控件C
if (C.Parent.Parent == null || C.Parent.Parent.Name != "panelMenu")
{
this.panelMenu.Visible = false;
}
}
return false;
}
return false;
}
/// <summary>
/// 循环获取最外层节点控件
/// </summary>
/// <param name="C"></param>
/// <returns></returns>
Control GetControl(Control C)
{
Control Temp = C.GetChildAtPoint(C.PointToClient(Cursor.Position));
if (Temp == null)
return C;
else
return GetControl(Temp);
}