我有一个包含4个标签的用户控件。 我使用此用户控件的多个副本动态填充面板(数据库中的每个条目一个)。 我想在任何一个用户控件上捕获click事件并获取与之关联的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;
}
是否有人能够推荐一些我可以用来捕获点击事件的代码(在用户控件的任何位置)并从控件中获取eventID
,homeTeam
和awayTeam
被点击了?
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
如果我点击任何浅灰色背景,则会触发点击事件,我可以抓住夹具eventID。但是,如果我点击任何标签或图片框,则不会触发该事件。 无论单击控件的哪个部分,我仍然需要捕获fixture eventID。有任何想法吗?
答案 0 :(得分:1)
您应该能够在输入
之后从sender
获取数据
public void Fixture_Click(object sender, EventArgs e)
{
var ctrl = ((TeamVsTeam.TeamVsTeam)sender);
int ID = ctrl.eventID;
}