2015-09-30 56 views
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; 
} 

有沒有人能夠提出一些代碼,我可以使用捕獲單擊事件(用戶控件上的任何位置)並從單擊的控件中獲取eventIDhomeTeamawayTeam

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,無論點擊哪個控件的哪一部分。有任何想法嗎?

回答

1

,你應該能夠後類型轉換

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

是擺脫sender數據!這就是我所追求的。 雖然Fixture_Click事件實際上並沒有被觸發,當我點擊一個控件。我錯過了其他的東西嗎? –

+0

@NickRoberts,是'TeamVsTeam'中的'Fixture_Click'觸發的? – ASh

+0

啊,我剛剛從用戶控件本身中刪除了公共無效的Fixture_Click(對象發件人,EventArgs e)部分,並已完成了這一訣竅。 再次感謝您的幫助 –

相關問題