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
}
}
private void button1_Click(object sender, EventArgs e){
Control[] controls = tabControl1.TabPages[tabControl1.SelectedIndex].Controls//获得当前选中的选项卡
WebBrowser currentBrowser=null
foreach (Control ctl in controls)//找到当前选项卡里的WebBrowser
{
if (ctl.GetType() = typeof(WebBrowser))
{
currentBrowser = ctl as WebBrowser
}
}
currentBrowser.Navigate(this.textBox1.Text)//导航你要的URL
}
楼上的方法虽然行的通,但对控件ID依赖过大,ID变更(或者说生成ID的方法变更),代码就得改;
用递归来遍历:privatevoid FindControl(Controlc){if(c is TextBox){//控件是TextBox}elseif (c is DropDownList){ //控件是DropDownList}if(c.Controls != null){foreach (Control xin c.Controls){FindControl(x) }}} 调用: this.FindControl(this)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)