程序开发 > C# > Winform > 正文

Winform用代码动态添加控件

亮术网 2020-08-05 本网原创

一般情况下,Winform添加控件都是直接把它拖到窗体中,这只是其中一种添加方式,还有一种灵活的添加方式,即用代码动态添加。有些控件在初始化的时候并不需要,把它拖到窗体中,势必影响程序执行效率,尤其这种控件多的时候,所以动态添加就显得十分有必要。

需要注意的是,并不是每个控件都可以动态添加其子控件,例如 Label、Button,在窗体方式也不能把控件拖到它们里面。下面是几个动态添加控件的实例。

 

一、Winform窗体动态添加控件

private void Form1_Load(object sender, EventArgs e)
  {
    Panel pa = new Panel();
    pa.Location = new Point(2, 10);

  pa.Width = 200;
    pa.Height = 100;

  pa.BackColor = Color.Beige;//背景颜色
    this.Controls.Add(pa);
  }

 

二、Panel动态添加ListView

private void PanelAddListview()
  {
    Panel pa = new Panel();
    span class="sl">pa.Location = new Point(5, 5);

  pa.Width = 290;
    pa.Height = 290;
    pa.BackColor = Color.Beige;
    this.Controls.Add(pa);

  ListView lv = new ListView();
    lv.Width = 290;
    lv.Height = 280;

  lv.GridLines = true;
    lv.View = View.Details;
    lv.FullRowSelect = true;

  lv.Columns.Add("UserID", 100, HorizontalAlignment.Center);
    lv.Columns.Add("昵称", 100, HorizontalAlignment.Center);

  ListViewItem lvi = new ListViewItem();
    lvi.SubItems.Clear();
    lvi.SubItems[0].Text = "80095667";
    lvi.SubItems.Add("云里飘");

  lv.Items.Add(lvi);
    pa.Controls.Add(lv);
  }

运行效果图如图1所示:

Panel控件动态添加ListView

图1

 

 

三、Winform窗体动态添加文本框控件TextBox

private void Form1_Load(object sender, EventArgs e)
  {
    TextBox tb = new TextBox();
    tb.Location = new Point(10, 10);

  tb.Width = 200;
    tb.Height = 22;
    this.Controls.Add(tb);
  }

添加 Label、Button,方法也是一样,如果把 TextBox 添加到 Panel 中,把 this 换为 Panel 即可。

 

 

四、Form动态添加PictureBox

private void AddPictureBox()
  {
    PictureBox pb = new PictureBox();
    pb.Name = "图片名称";
    pb.Image = Image.FromFile("E:\\winform\\images\\test.jpg");

   pb.Width = 280;
    pb.Height = 220;
    pb.Location = new Point(10, 10);

  //添加事件
    pb.Click += new System.EventHandler(pb_Click);
    this.Controls.Add(pb);
  }

private void pb_Click(object sender, System.EventArgs e)
  {
    PictureBox pb = (PictureBox)sender;
    string pbName = pb.Name;
  }

本文浓缩标签:winform控件