winform使用用户控件无法响应click事件
自己做了一个菜单,其中菜单项(menuItem)做成了一个用户控件,
但奇怪的是,点击第一级菜单的menuItem的时候,能够响应menuItem用户控件中的label绑定的
click事件,但是当第二级菜单显示出来,点击时候,却不能响应同一个click事件。
而无论是几级菜单,菜单项用户控件中的label的 mouseEnter和mouseLeave事件都能响应。
真是个奇怪的问题。
注,一级菜单和二级菜单的不同就是他们分别被add在不同的panel中。
代码如下:
//在菜单中加载菜单项(menuItemM自定义控件),无论一级二级都是通过该函数添加菜单项的。
public void addItem(string title, bool haveSubMenu, string url,string id,int index1)
{
menuItemM mi = new menuItemM();
mi.setData(title, url, id, haveSubMenu, this.mf,this.menuLeft,this.menuTop+this.menuHeight,this.level,index1);
mi.Left = 0;
mi.Top = this.menuHeight - 2;
this.pnMenuItem.Controls.Add(mi);
menuHeight += 29;
this.Height =menuHeight;
this.ResumeLayout(false);
}
//最后把pnMenuItem(包含该级菜单的所有菜单项的panel) 加载到不同的panel,1级的加载到 menuPanel中,2级加载到 menuPanel2中。是不是因为这个原因才
导致点击菜单项用户控件 (menuItemM)中的 label 有时无法响应 click事件。
if(level==1)
menuPanell.Controls.Add(pnMenuItem);
else
menuPanel2.Controls.Add(pnMenuItem);
//lbTitle是 menuItemM自定义控件中的一个 Label.在一级菜单中能运行该函数,但是在二级菜单中却不能运行。
private void lbTitle_Click(object sender, EventArgs e)
{
MessageBox.Show("click");
}
------解决方案--------------------
不可能没有响应,一定是你重新捕捉了系统消息,你看看是否重写了WndProc函数