2017-10-09 67 views
0

我试图动态添加一些控件(目前文本框标签)到表单。没有一组数量要绘制的对。如何动态添加控件对

的我想要实现实例。

正如您所看到的,表格耗尽了空间,因此它移到了右侧。

目前,我使用的是TableLayoutPanel一个FlowLayoutPanel内。
Column 0包含labelcolumn 1包含textbox

我如何,或者说,我可以得到FlowLayoutPanel拆分表?

private void Form1_Load(object sender, EventArgs e) 
{ 
    FlowLayoutPanel flp = new FlowLayoutPanel() 
    { 
     Location = new Point(0, 0), 
     Dock = DockStyle.Fill, 
     AutoSize = false, 
     FlowDirection = FlowDirection.TopDown, 
     AutoScroll = true, 
     BorderStyle = BorderStyle.Fixed3D, 
     WrapContents = true 
    }; 

    Controls.Add(flp); 

    TableLayoutPanel tlp = new TableLayoutPanel() 
    { 
     ColumnCount = 2, 
     Height = ClientSize.Height, 
     BackColor=Color.AliceBlue 
    }; 

    flp.Controls.Add(tlp); 

    for (int i = 0; i < 50; i++) 
    { 
     Label _label = new Label() 
     { 
      Text = i.ToString("00"), 
      AutoSize = true 
     }; 

     tlp.Controls.Add(_label, 0, i); 

     TextBox _textbox = new TextBox(); 
     tlp.Controls.Add(_textbox, 1, i); 
    } 
+0

使用(设计用于动态地添加字段的控制,如['DataGridView'] https://msdn.microsoft.com/en -us /库/ system.windows.forms.datagridview(v = vs.110)的.aspx),而不是一个'TableLayoutPanel'。 –

回答

1

可以使用具有TableLayoutPanel 4列,并设置用于控制合适ColumnStyles

把一个按钮和窗体上的面板,并设置面板的锚所有边缘。然后处理单击按钮的事件,并使用此代码:

private void button1_Click(object sender, EventArgs e) 
{ 
    var fields = new string[] { "A Field", "Some Field", "Another Field", 
     "A Long Field Name", "A Long Long Field Name" }; 
    var tlp = new TableLayoutPanel() { Dock = DockStyle.Fill, ColumnCount = 4 }; 
    tlp.ColumnStyles.Add(new ColumnStyle(SizeType.AutoSize)); 
    tlp.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 50)); 
    tlp.ColumnStyles.Add(new ColumnStyle(SizeType.AutoSize)); 
    tlp.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 50)); 
    panel1.Controls.Add(tlp); 
    foreach (var item in fields) 
    { 
     tlp.Controls.Add(new Label() { Text = item, AutoSize = true }); 
     tlp.Controls.Add(new TextBox() { Dock = DockStyle.Fill }); 
    } 
} 

enter image description here