C# 用户控件单击-Windows窗体
我的windows窗体上有一个自定义用户控件。此控件上有几个标签 我将在表单上动态显示这些控件的数组,其中将包含不同的数据位 我想做的是知道当我点击哪个用户控件时,它被选中了 当我单击用户控件上的空白区域时,这会起作用,但是,如果我单击用户控件上的任何标签,它将无法识别用户控件的单击 关于如何进行完整的用户控件单击,即使正在单击控件上的标签,您有什么想法吗 如果这个问题不清楚,或者您需要更多信息,请留下评论 我用c#做这件事C# 用户控件单击-Windows窗体,c#,winforms,user-controls,C#,Winforms,User Controls,我的windows窗体上有一个自定义用户控件。此控件上有几个标签 我将在表单上动态显示这些控件的数组,其中将包含不同的数据位 我想做的是知道当我点击哪个用户控件时,它被选中了 当我单击用户控件上的空白区域时,这会起作用,但是,如果我单击用户控件上的任何标签,它将无法识别用户控件的单击 关于如何进行完整的用户控件单击,即使正在单击控件上的标签,您有什么想法吗 如果这个问题不清楚,或者您需要更多信息,请留下评论 我用c#做这件事 谢谢 当在用户控件上单击另一个控件时,不会触发用户控件的单击事件。您需
谢谢 当在用户控件上单击另一个控件时,不会触发用户控件的单击事件。您需要手动绑定每个元素的单击事件。您可以通过用户控件的codebehind上的简单循环来实现这一点:
foreach (Control control in Controls)
{
// I am assuming MyUserControl_Click handles the click event of the user control.
control.Click += MyUserControl_Click;
}
在这段代码工作之后,当用户控件上的任何控件被单击时,MyUserControl_Click将触发
foreach (Control c in this.Controls)
{
c.Click += new EventHandler(SameAsForm_Click);
}
请记住,这不会将标签在分组框、面板等中的clickevents添加到“SameAsForm\u Click”-EventHandler中。太棒了!这完全有帮助。非常感谢!非常感谢。请注意,您应该为控件内的控件(例如面板内的控件)包含一个递归添加/删除,并且您不应该忘记检查事件方法中的对象类型:
public void MyUserControl\u Click(object sender,EventArgs e){if(sender.GetType()是Label){…}
。否则你很容易遇到问题。