如何实现动态的在一个PANEL上添加按钮,按钮实现不同的操作,当操作完成后,自动销毁按钮?例如:在FORM1上有一个PANEL1,当每次点击PANEL1时,都会在PANEL1上自动生成一个BUTTON,第一个生成的BUTTON命名为B01,第二个生成的命名为B02,第三个生成的命名为B03,依次类推,这些控件都显示在FORM1上。并且给这些BUTTON控件定义click事件,当点击这些BUTTON时,实现不同操作,当操作完成后,自动销毁PANEL1上的这些生成的BUTTON。现在,想请教两个问题:
1、如何自动生成控件件,并给控件命名及定义触发事件?
2、如何在操作完成后,实现自动销毁控件,注销生成的BUTTON所占用的系统资源?请大家给出代码!急用,在线等,一有答案,马上结贴!回贴有分!

解决方案 »

  1.   

    web?
    winform?Button btn1 = new Button();   //新建控件
    btn1.Location = new Point(10,20);  //可以调整属性
    btn1.Onclick = new EventHandler(YourMethodName);  //添加事件
    this.Panel1.Controls.Add(btn1);private void YourMethodName(object sender,EventArgs e)
    {  
       //Do what you want
     
       this.Panel1.Controls.Remove(sender as Control); // 点击后去掉控件
      //系统会自动回收Button占用系统资源。不放心你就GC.Collect()
    }
    web的就用js来实现吧!ps:  手敲代码,有误勿怪!
      

  2.   

    int i=1;
    Button btn=new Button();
    btn.id="B0"+i.ToString();
    i+=1;
    btn.Click += new EventHandler(bt_Click); 
    this.Panel1.Controls.Add(btn);void bt_Click(object sender, EventArgs e)
        {
           Button btn=sender as Button;
        } for(int j=i;j>0;j--)
    {
    Button btn =this.Panel1.Controls["BO"+j.ToString()] as Button ;
    this.Panel1.Remove(btn); 
    }
      

  3.   

    this.Panel1.Remove(btn);后,并不能真正释放资源,但Button btn=new Button(); 决定了btn是一个私有对象,如何释放btn?