单击控件内的文本时,用户控件单击事件不起作用?

我有一个名为GameButton的用户控件,里面有一个标签。 当我将用户控件添加到我的表单并向其添加单击事件时,单击自定义按钮的背景时会触发它,而不是标签中的文本? 如果不在用户控件代码中添加一堆点击事件,我该如何解决这个问题?

编辑:UI框架:winforms

如果我正确理解您,您的GameButton用户控件将在单击时触发事件,但不会在单击标签时触发 – 并且您需要两者。 这是因为标签(控件)位于背景之上。 因此,您还需要使用click事件注册您的标签。 这可以在设计器中手动完成,也可以以编程方式为页面上的每个控件完成。

如果要在UserControl中执行每个控件,请将其放入UserControl的OnLoad事件中,并且可以对每个控件使用相同的单击事件:

foreach(Control c in this.Controls){ c.Click += new EventHandler(yourEvent_handler_click); } public void yourEvent_handler_click (object sender, EventArgs e){ //whatever you want your event handler to do } 

编辑:最好的方法是在用户控件中创建单击事件处理程序属性。 这样,每次向用户控件添加/删除单击事件时,它都会自动将其添加/删除到用户控件中的所有控件。

 public new event EventHandler Click { add { base.Click += value; foreach (Control control in Controls) { control.Click += value; } } remove { base.Click -= value; foreach (Control control in Controls) { control.Click -= value; } } } 

这是另一篇文章 :

希望这可以帮助!

使标签的“启用”属性为“False”,然后鼠标事件将在用户控件中起作用。