C#winform动态添加控件

C#winform动态添加控件,第1张

第一步,想要添加什么对象,就先通过NEW关键字,实例化一个对象,创建一个对象的实体。

第二部,设置当前对象实体的属性值,事件等。

第三部,通过容器对象的Controls(该属性为一个集合)属性的Add方法添加你当前创建的对象实体。

这样,你就看到你动态添加了一个控件

Label lbl = new Label()

lbl.Click += new EventHandler(lbl_click) //用代码动态连接事件

.....

再实现lbl_click的定义:

private void lbl_click(object sender,EventArgs e){

Label lbl = (Label)(sender)//这么一转换就知道是哪个label点击了

if (lbl.Name=="lbl001")

//是001 label

}

有时候需要在程序运行到一定时候或者某个事件之后需要动态生成控件 在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 = b1Button1.Text = Btn1Button1.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

}

} 


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11947438.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-19
下一篇 2023-05-19

发表评论

登录后才能评论

评论列表(0条)

保存