在我的应用程序中,我有动态创建的按钮数组。我正在尝试为这些按钮引发一个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";
}
答案 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();
....
}
请注意,我已经在循环外部移动了数组声明和初始化,以创建数组的每个元素(实际按钮)。