2014-06-17 72 views
0

根據我從數據庫獲得的值編程控件時遇到困難。我可以繪製控件,但現在我試圖使用委託來爲它們分配一個ID,以便稍後將它們鏈接到一個訂單。我有帶標識符的編程控件

問題是:

foreach (Control table in pTableList) 
{ 
    if (!this.Controls.Contains(table)) 
    { 
     this.Controls.Add(table); 

     table.Click += new EventHandler(Table_Click); // 1 
    } 
} 

[Category("Action")] 
[Description("Table clicked.")] 
public event TableClickedHandler TableClicked; 

protected virtual void OnTableClicked(int pTableID) 
{ 
    if (TableClicked != null) 
    { 
     TableClicked(pTableID); // Notify Subscribers 
    } 
} 

private void Table_Click(object sender, EventArgs e) 
{ 
    OnTableClicked(1); // 2 
} 

然後拍攝和運行另一種方法,但我需要的是某種標識爲每個創建的表中。爲什麼不能我只是做sender.ID;)注意我必須在//2點1硬編碼,只是爲了得到它的工作,但這是沒用的,如果用戶點擊表23!

回答

1

在這種情況下,你可以使用.Tag屬性來存儲標識符或只是通過實際的表,這是在sender參數:

private void Table_Click(object sender, EventArgs e) 
{ 
    OnTableClicked(sender as Table); // 2 
} 

我用Table,因爲我不知道究竟什麼是你的控制的實際類型 - 你應該適當地改變它。

+0

大聲笑...謝了,沒想到會這麼簡單的感謝! – ravenx30