单击事件以动态创建按钮阵列

时间:2013-03-29 08:18:02

标签: c# asp.net

在我的应用程序中,我有动态创建的按钮数组。我正在尝试为这些按钮引发一个onclick事件并更改我点击的按钮的文本。我尝试了下面的代码,但它没有用。如何我这样做了?。任何暗示?

代码

   for (int i = 0; i < 5; i++)
    {
        lbl = new Button[5];
        lbl[i] = new Button();
        lbl[i].Text = "hi";
        lbl[i].Width = 30;
        lbl[i].Click += new EventHandler(lbl_click);
        //lbl[i].CssClass = "label";
        div1.Controls.Add(lbl[i]);
    }

点击活动

   protected void lbl_click(object sender, EventArgs e)
   {
    Button[] lbl = sender as button[];
    lbl[i].Text = "clicked";

   }

1 个答案:

答案 0 :(得分:4)

您正在重新创建事件处理程序中的按钮数组,但此数组未使用之前创建的按钮填充。它是空的,如果你试图使用这个数组的元素(null.Text,它将永远不会工作),它会给你一个空的引用异常。
而发件人对象则代表用户点击的按钮。

protected void lbl_click(object sender, EventArgs e)
{
     Button lbl = sender as Button;
     lbl.Text = "clicked";
}

此外,如果您需要知道哪个特定按钮已被点击,那么我建议您在创建时添加一些区别对象:

例如,使用name属性:

Button[] lbl = new Button[5];
for(int i = 0; i< 5; i++)
{
    ....
    lbl[i].Name = "Button_" + i.ToString();
    ....
}

请注意,我已经在循环外部移动了数组声明和初始化,以创建数组的每个元素(实际按钮)。