不要这样动态添加control
用new Button(),然后this.Controls.Add()来将这个button加到page中
thisButton.Click += new System.EventHandler(this.button_Click);
这样就可以个他添加事件
然后在button_Click(object sender,System.EventArgs e)
中,根据他的sender的ID来判断是点了那个button

解决方案 »

  1.   

    Button a=new Button();
    a.ID=i.ToString().Trim();
    a.Text=i.ToString().Trim();
    DIV1.Controls.Add(a);做了这些后事件的添加还不太明白,希望 jupiterII() 兄能说详细一点
    thisButton.Click += new System.EventHandler(this.button_Click);
    上面这句我应该怎么来写呢?我对事件的原理还不是太明白,看上面你的意思是这几个button共用一个事件函数,然后通过sender来区分不同的button,是这样吗?
      

  2.   

    那就是a..Click += new System.EventHandler(this.button_Click);事件的mothed写
    button_Click(object sender,System.EventArgs e)
    {
    Button a = (Button)sender;
    if(a.ID = ....)
    ...
    }
      

  3.   

    麻烦jupiterII()兄再帮我看一下代码,用以下代码点击button后没有触发事件,并且按纽都消失了,为什么啊?
    while(m_fkrq<m_now)
    {
    Button a=new Button();
    a.Click+=new System.EventHandler(this.button_Click);
    a.ID=i.ToString().Trim();
    a.Text=i.ToString().Trim();
    DIV1.Controls.Add(a);
    m_fkrq=m_fkrq.AddYears(1);
    i++;
    }private void button_Click(object sender,System.EventArgs e)
    {
    Button a=(Button)sender;
    TextBox3.Text=a.ID.ToString();
    if(a.ID=="1")
    TextBox3.Text="1";
    }
      

  4.   

    动态生成的控件回发后无法保存状态,你可以将它放在Page_Load里面
      

  5.   

    放在PAGE_LOAD里不太可行,有其他方法解决吗?
    还有为什么事件没有响应呢?
      

  6.   

    事件没有响应是因为你提交后,页面刷新,你的控件没有被创建。你可以跟踪一下它的执行过程
    先是Page_Load () ,然后才是你createbutton代码,如果你在page_load()后没有CreateButton的话,那么找不到你写的事件了。所以你需要在page_load 的时候重新创建一次
    或者使用
    if(!IsPostBack){
       // Create Button code here 
    }
      

  7.   

    动态生成的控件可以放在Page_Init或者On_load中