用户控件单击 - Windows窗体

9
我在我的Windows表单上有一个自定义用户控件,其中包含几个标签。我将动态显示这些控件的数组,这些控件包含不同的数据位。
我想知道当我单击它时选择了哪个用户控件。如果我单击用户控件上的空白区域,这将起作用。但是,如果我单击用户控件上的任何标签,则无法识别用户控件的单击。
你有什么想法可以实现完整的用户控件单击,即使点击了控件上的标签?
如果这个问题不清楚,或者您需要更多信息,请留言。
我是用C#做的。
谢谢!
2个回答

12

当用户控件上的另一个控件被点击时,用户控件的单击事件不会触发。您需要手动绑定每个元素的单击事件。您可以在用户控件的代码后台上使用简单的循环来完成此操作:

foreach (Control control in Controls)
{
    // I am assuming MyUserControl_Click handles the click event of the user control.
    control.Click += MyUserControl_Click;
}

在这段代码工作后,当用户控件上的任何控件被点击时,MyUserControl_Click将会触发。


太棒了!这真的帮了我很多。非常感谢! - CodeLikeBeaker
1
谢谢!!!请注意,您应该为嵌套控件(例如在面板内的控件)包括递归添加/删除功能。 - Gerhard Powell
另外,您不应忘记在事件方法中检查对象类型:public void MyUserControl_Click(Object sender, EventArgs e) { if(sender.GetType() is Label) {...} }。否则,您可能会遇到问题。 - libjup

0
    foreach (Control c in this.Controls)
    {
        c.Click += new EventHandler(SameAsForm_Click);
    }

请记住,这不会将组合框、面板等标签的点击事件添加到“SameAsForm_Click”事件处理程序中。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接