C# - 在多个动态创建的用户控件上捕获事件

C# - Capture event on multiple dynamically created user controls

我有一个包含 4 个标签的用户控件。 我用这个用户控件的多个副本动态填充一个面板(一个用于数据库中的每个条目)。 我想捕获任何一个用户控件上的单击事件并获取与其关联的 id。

这是我的用户控件中包含的代码:

public partial class TeamVsTeam: UserControl
{
    public TeamVsTeam()
    {
        InitializeComponent();
    }

    public int eventID { get; set; }
    public int idHomeTeam { get; set; }
    public int idAwayTeam { get; set; }
}

在我的应用程序中,我用多个控件填充面板,如下所示:

TeamVsTeam.TeamVsTeam[] teamLabel = new TeamVsTeam.TeamVsTeam[n];

for (int i = 0; i < m_fixtures.lstTeams.Count; i++)
{
    teamLabel[i] = new TeamVsTeam.TeamVsTeam();

    teamLabel[i].eventID = m_fixtures.lstTeams[i].idEvent;

    teamLabel[i].lblHome.Text = m_fixtures.lstTeams[i].homeTeam.ToString();
    teamLabel[i].lblAway.Text = m_fixtures.lstTeams[i].awayTeam.ToString();

    teamLabel[i].Clicked += new EventHandler(Fixture_Click);

   //Location
    teamLabel[i].Top = 80 * i;
    teamLabel[i].Parent = panel1;
}

有没有人能推荐一些代码,我可以用它来捕获点击事件(用户控件上的任何地方)并从控制哪个被点击?

    public void Fixture_Click(object sender, EventArgs e)
    {
        var ctrl = ((TeamVsTeam.TeamVsTeam)sender);
        int ID = ctrl.eventID;
        MessageBox.Show(ID.ToString());
    }

编辑 我已经更新了上面的代码以显示我现在正在使用的内容,但是,它并没有完全解决我的问题。

这是一个完全填充的用户控件的示例(3 个标签和 2 个图片框)

https://www.dropbox.com/s/0tidlarzfoy6j2u/2015-09-30%2015_48_35-Super-6.jpg?dl=0

如果我点击任何一个浅灰色背景,点击事件就会被触发,我就可以抓取灯具事件ID。但是,如果我单击任何标签或图片框,则不会触发该事件。 无论单击控件的哪一部分,我仍然需要捕获夹具 eventID。有任何想法吗?

你应该能够在输入 cast

后从 sender 获取数据
public void Fixture_Click(object sender, EventArgs e)
{
     var ctrl = ((TeamVsTeam.TeamVsTeam)sender);
     int ID = ctrl.eventID;
}