0

在我的应用程序中,我动态创建了一系列按钮。我正在尝试为这些按钮引发 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";

   }
4

1 回答 1

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();
    ....
}

请注意,我已将数组声明和初始化移到创建数组的每个元素(实际按钮)的循环之外。

于 2013-03-29T08:19:31.303 回答