您的位置:首页 > 编程语言 > C#

C#动态生成控件以及添加事件处理

2014-06-07 17:45 218 查看
有时候需要在程序运行到一定时候或者某个事件之后需要动态生成控件 在C#下一般方式是:

    private Button Db=new Button() ;

     Db.Name="Dy_Button"           //设定名称

     Db.Location=new Point(100,200);//设定位置

     。。。。//其他属性设置

   //这里添加消息处理

     。。

     this.Controls.Add (Db);//添加到控件组中

  这样就完成了动态生成但是需要给控件添加消息处理事件

  那么现在就需要在生成控件添加到控件组前增加如下语句:

DPB.MouseClick += new
EventHandler(this.pictureBox_MouseClick);

  现在编写这个消息处理的函数pictureBox_Click()

        private void pictureBox_MouseClick(object
sender,EventArgs e)

        {

            MessageBox.Show("click");

        }

  这样完成了事件处理的添加

  首先,创建一个全局变量"i "用来区分各个新的按钮:

private int i=0;

  然后在已有的按钮中添加方法如下:

   private void button1_Click(object sender, System.EventArgs
e)

   {

    i++;

    Button b = new Button();//创建一个新的按钮

    b.Name="b"+i;//这是我用来区别各个按钮的办法

    System.Drawing.Point p = new
Point(12,13+i*30);//创建一个坐标,用来给新的按钮定位

    b.Location = p;//把按钮的位置与刚创建的坐标绑定在一起

  

    panel1.Controls.Add(b);//向panel中添加此按钮

    b.Click += new
System.EventHandler(btn_click);//将按钮的方法绑定到按钮的单击事件中b.Click是按钮的单击事件

   }

完成以上步骤就已经可以进行动态按钮的创建 下面我们来讲如何对新建的按钮添加对应的事件方法btn_click(): private
void btn_click(object sender, System.EventArgs e) { Button b1 =
(Button)sender;//将触发此事

  完成以上步骤就已经可以进行动态按钮的创建

 

  下面我们来讲如何对新建的按钮添加对应的事件方法btn_click():

   private void btn_click(object sender, System.EventArgs
e)

   {

    Button b1 = (Button)sender;//将触发此事件的对象转换为该Button对象

  

     MessageBox.Show(""+b1.Name);

   }

  至此就已经完成了动态创建按钮和事件

  ASP.net为控件动态添加事件

  实现的功能是在网页上的Panel中动态添加一个Button,并为这个Button写一个单击事件。

  动态添加控件的事件,语句:

Control.Command += new CommandEventHandler(this.EventFun);

  具体的代码请看下面:

  需要特别注意的是:

  添加控件和给控件加事件时绝对不能放到
if(!IsPostback){}里面,那样的话,点击一次后控件会消失,而且事件也不

  会执行。

protected void Page_Load(object sender, EventArgs e)

    {

       //将输入字符串分析为System.Web.UI.Control对象,b为传进去的值

        Control c = ParseControl("<asp:Button Text =
'按我' ID = 'myButton' commandargument = 'b' runat = 'server'
/>");

        //将控件添加大Panel中

        this.Panel1.Controls.Add(c);

        //查找页面名为myButton的控件

        Button Button = (Button)Page.FindControl("myButton");

        //添加事件On_Button

        Button.Command += new
CommandEventHandler(this.On_Button);

       

    }

    //CommandEventArgs为command事件提供数据

    protected void On_Button(Object sender,CommandEventArgs
e)

    {

        Response.Write("<script language =
'JavaScript' type = 'text/Javascript'>alert('" +
e.CommandArgument.ToString() +
"');</script>");

    }

动态添加控件并添加事件 private void Page_Load(object sender,
System.EventArgs e) { Button Button1 = new Button();
Button1.CommandArgument = b1; Button1.Text = Btn1; Button1.Command
+= new CommandEvent

  动态添加控件并添加事件

 

private void Page_Load(object sender, System.EventArgs e)

{

   Button Button1 = new Button();

   Button1.CommandArgument = "b1";

   Button1.Text = "Btn1";

   Button1.Command += new CommandEventHandler(this.OnButton);

   PlaceHolder1.Controls.Add(Button1);

   Button Button2 = new Button();

   Button2.CommandArgument = "b2";

   Button2.Text = "Btn2";

   Button2.Command += new CommandEventHandler(this.OnButton);

   PlaceHolder1.Controls.Add(Button2);

   Control c3 = ParseControl("<ASP:Button
id='Button3' text='Btn3' commandname='Btn' commandargument='b3'
runat='server' />"); //将字符串转换成Web控件

   Control c4 = ParseControl("<asp:Button
id='Button4' text='Btn4' commandname='Btn' commandargument='b4'
runat='server' />");

   PlaceHolder1.Controls.Add(c3);

   PlaceHolder1.Controls.Add(c4);

   Button myBut = (Button)Page.FindControl("Button3");

   myBut.Command += new CommandEventHandler(this.OnButton);

   Button myBut2 = (Button)Page.FindControl("Button4");

   myBut2.Command += new CommandEventHandler(this.OnButton);

}

public void OnButton(Object Sender, CommandEventArgs e)

{

   switch (e.CommandArgument.ToString().ToLower())

   {

    case "b1":

     Label1.Text = "Button 1";

     break;

    case "b2":

     Label1.Text = "Button 2";

     break;

    case "b3":

     Label1.Text = "Button 3";

     break;

    case "b4":

     Label1.Text = "Button 4";

     break;

   };

} 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: