我在程序中利用循环动态添加了10个按钮,现在我要给这些动态添加的按钮添加事件,应该怎么做?

解决方案 »

  1.   

    buttonX.OnClick += YourFunction;
      

  2.   


      private void button1_Click(object sender, EventArgs e)
            {
               //Do something Here
            }  private void AddClickHandler(Button[] buttons)
      {
         foreach(Button b in buttons)
         {
           b.Click +=button1_Click;
         }
      }
    上面写错了,应该是Click。不是OnClick^
      

  3.   

    我这样子写了,可是我点击动态添加的按钮时,只是刷新了页面,没有执行邦定的方法,我是这样写得:
         private void AddButton()
        {
            for (int i = 0; i < 10; i++)
            {
                Button btn = new Button();
                btn.ID = "btn" + i.ToString();
                btn.Text = "删除";
                btn.Click += new System.EventHandler(Button1_Click);
                pnl.Controls.Add(btn);
            }
        }
     protected void Button1_Click(object sender, EventArgs e)
        {
            Button button = (Button)sender;
            Response.Redirect("Default8.aspx");
        }
      

  4.   

            private void Form1_Load(object sender, EventArgs e)
            {
                Button[] MyButton = new Button[10] ;
                for (int i=0;i<MyButton.Length;i++)
                {
                    MyButton[i] = new Button();
                    MyButton[i].Name = MyButton[i].Text = "btn" + (i).ToString();
                    MyButton[i].Click += new EventHandler(ButtonClick);
                }            this.Controls.AddRange(MyButton);
            }        private void ButtonClick(object sender, EventArgs e)
            {
                MessageBox.Show(((Button)sender).Text);
            }
      

  5.   

    ASP.NET的?我没怎么搞过,这个我就不能100%保证可行了,原则上应该是行得通的。
      

  6.   

       private void AddButton() 
        { 
            for (int i = 0; i < 10; i++) 
            { 
                Button btn = new Button(); 
                btn.ID = "btn" + i.ToString(); 
                btn.Text = "删除"; 
                btn.Click += new System.EventHandler(Button1_Click); 
                pnl.Controls.Add(btn); 
            } 
        } 
    protected void Button1_Click(object sender, EventArgs e) 
        { 
            Button button = (Button)sender; 
            Response.Redirect("Default8.aspx"); 
        }
      

  7.   

    这里你点击Button只是页面跳转,跟你绑定有什么关系
      

  8.   

    我说得是我点击我动态添加的按钮!不是点击Button1按钮
      

  9.   

    我设了断点在调试,点击动态添加的按钮时,没有执行Button1事件,Button1事件是我邦定到动态添加的按钮上面的事件啊,如果不是动态添加的按钮,我试了,邦定事件后,是可以执行的
      

  10.   

    private void AddButton() 
        { 
            for (int i = 0; i < 10; i++) 
            { 
                Button btn = new Button(); 
                btn.ID = "btn" + i.ToString(); 
                btn.Text = "删除"; 
                btn.Click += new System.EventHandler(Button1_Click); 
                pnl.Controls.Add(btn); 
            } 
        } 
    protected void Button1_Click(object sender, EventArgs e) 
        { 
            Button button = (Button)sender; 
            Response.Redirect("Default8.aspx"); 
        }
      

  11.   

    这个你不是贴过了吗,我想看看完整的,整个后台代码,包括你在什么时候调用这个AddButton()方法的
      

  12.   

    protected void Page_Load(object sender, EventArgs e)
        {
        }protected void btnAddDL_Click(object sender, EventArgs e)
        {
            intDropDownListNum = intDropDownListNum + 1;
            AddButton();    }private void AddButton() 
        { 
            for (int i = 0; i < intDropDownListNum; i++) 
            { 
                Button btn = new Button(); 
                btn.ID = "btn" + i.ToString(); 
                btn.Text = "删除"; 
                btn.Click += new System.EventHandler(Button1_Click); 
                pnl.Controls.Add(btn); 
            } 
        } 
    protected void Button1_Click(object sender, EventArgs e)
        {
            intDropDownListNum = intDropDownListNum - 1;        
        }
      

  13.   

           private void Form1_Load(object sender, EventArgs e)
            {
                Button[] MyButton = new Button[10] ;
                for (int i=0;i<MyButton.Length;i++)
                {
                    MyButton[i] = new Button();
                    MyButton[i].Name = MyButton[i].Text = "btn" + (i).ToString();
                    MyButton[i].Click += new EventHandler(ButtonClick);
                }            this.Controls.AddRange(MyButton);
            }        private void ButtonClick(object sender, EventArgs e)
            {
                MessageBox.Show(((Button)sender).Text);
            }[
      

  14.   


            protected void Page_Load(object sender, EventArgs e)
            {
                if (!string.IsNullOrEmpty(Request.QueryString["action"]) && Request.QueryString["action"] == "add")
                {
                    intDropDownListNum = int.Parse(Request.QueryString["num"]);
                    AddButton();
                }
            }        protected void btnAddDL_Click(object sender, EventArgs e)
            {
                intDropDownListNum = intDropDownListNum + 1;
                Response.Redirect("WebForm2.aspx?action=add&num=" + intDropDownListNum.ToString());
            }
            private void AddButton()
            {
                for (int i = 0; i < intDropDownListNum; i++)
                {
                    Button btn = new Button();
                    btn.ID = "btn" + i.ToString();
                    btn.Text = "删除";
                    btn.Click += new System.EventHandler(Button1_Click);
                    this.form1.Controls.Add(btn);
                }
            }
            protected void Button1_Click(object sender, EventArgs e)
            {
                intDropDownListNum = intDropDownListNum - 1;
            }
      

  15.   

    //动态添加按钮
                    Button btnSubmit = new Button();
                    btnSubmit.Name = i.ToString();
                    btnSubmit.Text = "确定";
                    btnSubmit.Top = 160;
                    btnSubmit.Left = 150;
                    btnSubmit.BackColor = Color.Green;                btnSubmit.Name = groupNames[i];//把权限组名称传递给按钮的Name属性                //委托3次
                    btnSubmit.Click += new System.EventHandler(this.btnSubmit_Click);//委托给一个方法
    /// <summary>
            /// 功能:委托指向的方法
            /// </summary>
            /// <param name="sender">可以强制转换成按钮类型并可以通过该变量的Name属性得到按钮的Name属性</param>
            /// <param name="e"></param>
            private void btnSubmit_Click(object sender, EventArgs e)
            {
                //MessageBox.Show("呵呵");--测试委托成功否
                Button btn = (Button)sender;
                MessageBox.Show(btn.Name.ToString());      
            }
                
      

  16.   

    我也遇到过这样的问题
    应该是框架本身的问题,当你点你的按钮的时候
    会刷新页面
    代码会进入到pageload,这时候,你动态添加的按钮其实已经失效了
    所以,不会进入到你事先绑定的事件
      

  17.   

    private 的咋能调用protected的方法的 ,很明显的错误吧
      

  18.   

      private void button1_Click(object sender, EventArgs e)
            {
                i++;
                Button btn = new Button();
                btn.Name = "Button" + i.ToString();
                btn.Text = "Button" + i.ToString();
                btn.BackColor = Color.Yellow;
                btn.Width = 50;
                btn.Height = 50;
                btn.Location = new System.Drawing.Point(x, 30);
                x = x + 60;
                btn.Click += new EventHandler(Button2_click);
                this.Controls.Add(btn);
            }
              private void Button2_click(object sender, EventArgs e)
            {
                string str="";
                Button button = (Button)sender;
                str = button.Text;
                switch (str)
                {
                    case "Button1":
                        {
                            label1.Text = "1";
                            break;
                        }
                    case "Button2":
                        {
                            label1.Text = "2";
                            break;
                        }
                    case "Button3":
                        {
                            label1.Text = "3";
                            break;
                        }
                }
            }
      

  19.   

    不要将添加按钮方法放在        if (!IsPostBack)方法中,放在外层
      

  20.   

    34楼是对的,要在
    page_load(object sender, EventArgs e)
    {
      AddButton();} 
    就对了,不然回发是没法绑定加入的button的