1)在窗体Form1上布置一个Label
2)Form1的后台代码
using Systemusing System.Drawing
using System.Windows.Forms
namespace WindowsFormsApplication5
{
public partial class Form1 : Form
{
Button btn
public Form1()
{
InitializeComponent()
// 动态添加按钮
btn = new Button()
btn.Text = "点击我"
btn.Click += Btn_Click
this.Controls.Add(btn)
btn.Location = new Point(10, 10)
}
// 点击按钮事件处理
private void Btn_Click(object sender, EventArgs e)
{
label1.Text = "新的标签内容"
}
}
}
你要知道服务器控件的button点击之后是先刷新页面再执行事件代码的,所以你现在就是第一次显示了btn1然后点击btn1之后生成了btn2再点击btn2时候页面就先刷新了又一次执行了pageload事件所以btn2的事件没有执行。
那么你可以换种方法来做
LinkButton btn2 = new LinkButton()protected void Page_Load(object sender, EventArgs e)
{
LinkButton btn1 = new LinkButton()
btn1.Text = "111111111111111111111111"
btn1.Click += lb_Click1
panel1.Controls.Add(btn1)
btn2.Text = "22222222222222222222222222"
btn2.Click += new EventHandler(lb_Click2)
btn2.Visible = false
panel2.Controls.Add(btn2)
}
void lb_Click1(object sender, EventArgs e)
{
btn2.Visible = true
}
void lb_Click2(object sender, EventArgs e)
{
Response.Write("<script>alert('Btn2 clicked')</script>")
}
再就是一般这种 *** 作最好别从后台往前台输出控件,js来做还是很方便的
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)