使用标识符编程控件

时间:2014-06-17 15:52:44

标签: c# winforms delegates custom-controls

基于我从数据库获得的值,我在编程控件方面遇到了困难。我可以正确地绘制控件但现在我正在尝试使用委托为每个控件分配一个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;)注意我必须在点int处对//2 1进行硬编码,只是为了让它工作但是如果用户这没用点击表23!

1 个答案:

答案 0 :(得分:1)

在这种情况下,您可以使用.Tag属性来存储标识符,也可以只传递sender参数中的实际表:

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

我使用了Table因为我不确切知道控件的实际类型 - 您应该适当地更改它。