C#动态添加控件

有时候需要在程序运行到一定时候或者某个事件之后需要动态生成控件
在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");
         }
这样完成了事件处理的添加

--------------------------------------------------------------------------------------------------

能动态添加就是不怎会定位....

        for (j = 0; j < ds.Tables[0].Rows.Count; j++)//ds为Dataset的对象,
        {
            
string strname1 = ds.Tables[0].Rows[j][0].ToString();

             HtmlGenericControl div
= new HtmlGenericControl("div");
             div.Style.Add(
"width", "100px");
             div.Style.Add(
"height", "40px");

             Label lab
= new Label();
             TextBox txt
= new TextBox();
             txt.ID
= "txt_object" + j.ToString();
             lab.Text
= strname1 + "";
             txt.Width
= Unit.Pixel(50);
             div.Controls.Add(lab);
             div.Controls.Add(txt);

            
this.Page.Form.Controls.Add(div);
         }
得到文本框里面得值
    protected void Button1_Click(object sender, EventArgs e)
    
{
           
int i = 1;//假定i为1

            objText
= ((TextBox)form1.FindControl("txt_object" + i.ToString())).Text.ToString();
            Response.Write(objText);
     }

double left = 10, top = 20;
Lable1.Style["left"] = left.ToString() + "px";
Lable1.Style["top"] = top.ToString() + "px";

原文地址:https://www.cnblogs.com/zzxap/p/2175895.html