using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Drawing;
public partial class _Default : System.Web.UI.Page 
{    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            Button btn1 = new Button();
            btn1.ID = "button1";
            btn1.Attributes.Add("runat","server");
            btn1.Text = "还原";
            btn1.Width = 50;
            btn1.Height = 50;
            btn1.Click+=new EventHandler(btn1_Click);
            this.form1.Controls.Add(btn1);
        }
    }
    void btn1_Click(object sender, EventArgs e)
    {
        Response.Write("<script language='javascript'>alert('btn1');</script>");
    }
}
为何单击之后,控件消失了

解决方案 »

  1.   

    以前也试过,同样的效果,应该是Webform的刷新造成的,Winform没有这样的问题关注
      

  2.   

    貌似与asp.net页面的生命周期有关
      

  3.   

    你的button是在page_load里实现的,每次页面类都会重新生成一个新的页实例,而你点击下button,就是一个回传了,回传后生成新实例,执行page_load,IsPostBack为true,当然button就消失了。去掉IsPostBack试试
      

  4.   

    if (!IsPostBack) 是你第一次访问的时候 才执行,刷新以后就不能访问了。在外面你还要创建 一次。
      

  5.   

    ispostback前面加了一个! 我做了判断啊
      

  6.   

    去掉 if (!IsPostBack) ,加上这个动态添加的控件在回传后会丢失