我这个BUTTON是动态实例出来的,设置了ID和TEXT之后,我想设置它的事件,但是不起作用,特向各位牛人请教。
由于我初学,献上所有分了。我现在是这样写的。  protected void Page_Load(object sender, EventArgs e)
    {
        Button btn = new Button();
        btn.ID = "22009-9-21 21:10:38";
        btn.Text = "第一个周期";
        btn.Click += new EventHandler(Button1_Click);
        btn.Click += new EventHandler(btn_Click);
        Panel1.Controls.Add(btn);
    }    void btn_Click(object sender, EventArgs e)
    {
        Button btns = (Button)sender;
        string xx = btns.ID;
        string bb = btns.Text;
    }

解决方案 »

  1.   

    参考http://hi.baidu.com/__%B6%C0%B9%C2%B2%D0%D4%C6__/blog/item/32b6424463b4d04b510ffebe.html
      

  2.   

     btn.Click += new EventHandler(Button1_Click);
            btn.Click += new EventHandler(btn_Click);
    为什么要两句?去掉第一句
      

  3.   

    把button初始化的代码放在if(!ispostback){}里面
      

  4.   

     Button btn = new Button();
                    //btn.ID = "22009-9-21 21:10:38";
                    btn.CommandArgument = "22009-9-21 21:10:38";
                    btn.Text = "第一个周期";
                    btn.Click += new EventHandler(btn_Click);
                    this.Panel1.Controls.Add(btn);
    是id的问题,你可以把22009-9-21 21:10:38放在CommandArgument里
    取的时候 string xx = btns.CommandArgument;
                string bb = btns.Text;
      

  5.   


        <asp:PlaceHolder ID="PlaceHolder1" runat="server"></asp:PlaceHolder>
        <asp:Label ID="Label1" runat="server"></asp:Label>     protected void Page_Load(object sender, EventArgs e)
        {
            Button btn = new Button();
            btn.ID = "22009-9-21 21:10:38";
            btn.Text = "第一个周期";
            btn.Command += new EventHandler(this.Button1_Click);
            Panel1.Controls.Add(btn);
        } public void Button1_Click(Object Sender, CommandEventArgs e)
        {
          Label1.Text = "Button 1";
        }
      

  6.   

    绝对不能放在if(!ispostback){}里面
    否则你的事件永远调用不到
    因为提交页面后,没有执行
    btn.Click += new EventHandler(btn_Click); 
    那代码就不知道这个按钮有这个事件(不要想当然,http就是这样无状态的)经过我测试,发现你的代码问题是在那个id的设定
    把btn.ID = "22009-9-21 21:10:38";
    这句修改为btn.ID = "a1";
    你的代码就完全正常了。
    至于为什么,我还不太清楚,察看Request.Form,这个id也能正常提交,很奇怪但是你的id弄得这么奇怪,也是够奇怪的。
    id应该是英文与数字的集合,你弄个时间干吗?
      

  7.   

    不要放在ISPOSTBACK  那是是第一次加载才有用的! 放那里面你就没法找到了!我看你要不把事件再写一下!
      

  8.   

    protected void Page_Load(object sender, EventArgs e)
        {
            Button btn = new Button();
            btn.ID = "22009-9-21 21:10:38";
            btn.Text = "第一个周期";
            btn.Click += new EventHandler(Button1_Click);
            btn.Click += new EventHandler(btn_Click);
            Panel1.Controls.Add(btn);
        }    void btn_Click(object sender, EventArgs e)
        {
            Button btns = (Button)sender;
            string xx = btns.ID;
            string bb = btns.Text;
        }btn.Click += new EventHandler(btn_Click); 是多播 多加几句这样的语句是没问题的
    应该定义一个属于EventHandler 委托的事件event 
    然后定义btn_Click 为event 类型 
    这样才可以调用的