1
我有一個包含4個標籤的用戶控件。 我使用此用戶控件的多個副本(數據庫中的每個條目)動態填充面板。 我想捕獲任何一個用戶控件上的點擊事件,並獲取與其關聯的ID。C# - 在多個動態創建的用戶控件上捕獲事件
的是包含在我的用戶控件中的代碼:
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。但是,如果我點擊任何標籤或圖片框,則不會觸發該事件。 我仍然需要捕獲fixtureID,無論點擊哪個控件的哪一部分。有任何想法嗎?
是擺脫
sender
數據!這就是我所追求的。 雖然Fixture_Click事件實際上並沒有被觸發,當我點擊一個控件。我錯過了其他的東西嗎? –@NickRoberts,是'TeamVsTeam'中的'Fixture_Click'觸發的? – ASh
啊,我剛剛從用戶控件本身中刪除了公共無效的Fixture_Click(對象發件人,EventArgs e)部分,並已完成了這一訣竅。 再次感謝您的幫助 –