项目场景:
C#中在FlowLayoutPanel控件中添加自定义的控件PanelEx,在PanelEx中自定义添加ButtonExt控件
问题描述
自定义控件右键点击事件不生效
代码:
ButtonExt button;button = new ButtonExt();//button.Click += new System.EventHandler(this.button_Click);button.MouseDown+= new MouseEventHandler(this.button_Click);PanelEx panelConter = new PanelEx();panelConter.Tag = tag;panelConter.Width = 135;panelConter.Height = 130;panelConter.Controls.Add(button);panelConter.Start_path = url_path;this.flowLayoutPanel_Firms.Controls.Add(panelConter);
原因分析:
使用button.Click += new System.EventHandler(this.button_Click)后左键点击都能正常识别和触发,但右键点击一直无法生效。
初步怀疑是添加了两层控件的原因,导致button的右键点击失效。但实测后并不是,查找了下资料发现了点击事件可以通过Click事件和MouseDown委托的方法,就打算换过用MouseDown委托,果然解决了问题
总结:
按下鼠标键,立马会触发的是MouseDown事件。鼠标松开的时候会依次触发MouseClick和MouseUp事件。所以从响应效率上
MouseDown要优于MouseClick