I don't have a much clearer solution, but I think this is worth trying. I think you have to customize your own Label class, in my code I call it
MyLabel then create a new Click event (with new keyword), then... Here is the detail.
Then if you click the label with some method was subscribed with MyLabel.Click, the sender will be your UserControl (in my code it is UserControl1).
public UserControl1()
{
InitializeComponent();
MyLabel l = new MyLabel();
l.Text = "Mylabel";
l.BorderStyle = BorderStyle.FixedSingle;
l.Size = new Size(100, 50);
l.Click += (sender, e) =>
{
UserControl u = (UserControl)sender;
MessageBox.Show(u.Name);
};
Controls.Add(l);
}
public class MyLabel : Label
{
public MyLabel()
{
base.Click += (sender, e) =>
{
if(Click != null)
Click(this.Parent, e);
};
}
public new event EventHandler Click;
}
}
Hope it helps, If you are still confused, I'm glad to explain more.