如何在动态按钮上创建动态按钮单击事件
本文关键字:动态 按钮 单击 事件 创建 | 更新日期: 2023-09-27 17:57:58
我正在页面上动态创建一个按钮。现在我想在该按钮上使用按钮点击事件。
如何在C#ASP.NET中执行此操作?
Button button = new Button();
button.Click += (s,e) => { your code; };
//button.Click += new EventHandler(button_Click);
container.Controls.Add(button);
//protected void button_Click (object sender, EventArgs e) { }
对新手来说更容易的一个:
Button button = new Button();
button.Click += new EventHandler(button_Click);
protected void button_Click (object sender, EventArgs e)
{
Button button = sender as Button;
// identify which button was clicked and perform necessary actions
}
只需在创建按钮时将事件处理程序添加到按钮即可。
button.Click += new EventHandler(this.button_Click);
void button_Click(object sender, System.EventArgs e)
{
//your stuff...
}
这更容易做到:
Button button = new Button();
button.Click += delegate
{
// Your code
};
您可以用一种简单的方式创建按钮,例如:
Button button = new Button();
button.Click += new EventHandler(button_Click);
protected void button_Click (object sender, EventArgs e)
{
Button button = sender as Button;
// identify which button was clicked and perform necessary actions
}
但事件可能不会激发,因为每次回发时都必须重新创建一个或多个元素,否则将丢失事件处理程序。
我尝试了这个解决方案,验证ViewState是否已经生成,并在每次回发时重新创建元素,
例如,假设您在事件点击上创建按钮:
protected void Button_Click(object sender, EventArgs e)
{
if (Convert.ToString(ViewState["Generated"]) != "true")
{
CreateDynamicElements();
}
}
在回发时,例如在页面加载时,您应该这样做:
protected void Page_Load(object sender, EventArgs e)
{
if (Convert.ToString(ViewState["Generated"]) == "true") {
CreateDynamicElements();
}
}
在CreateDynamicElements()中,您可以放置所需的所有元素,例如按钮。
这对我来说效果很好。
public void CreateDynamicElements(){
Button button = new Button();
button.Click += new EventHandler(button_Click);
}
假设您有25个对象,并且需要一个进程来处理任何一个对象单击事件。您可以编写25个委托,也可以使用循环来处理单击事件。
public form1()
{
foreach (Panel pl in Container.Components)
{
pl.Click += Panel_Click;
}
}
private void Panel_Click(object sender, EventArgs e)
{
// Process the panel clicks here
int index = Panels.FindIndex(a => a == sender);
...
}