2017-10-09 9 views
0

フォームにコントロール(現在テキストボックスのラベル)を動的に追加しようとしています。設定された数のペアが描画されません。コントロールのペアを動的に追加する方法

私が達成しようとしているものの例。

ご覧のとおり、テーブルの領域が不足しているため、右側に移動します。

現在、私は、FlowLayoutPanelの中でTableLayoutPanelを使用しています。
Column 0は、labelを含み、column 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

:次にハンドルのボタンのイベントをクリックして、このコードを使用-us/library/system.windows.forms.datagridview(v = vs.110).aspx)であり、 'TableLayoutPanel'ではありません。 –

答えて

1

あなたは4列を持つTableLayoutPanelを使用し、制御に適したColumnStylesを設定することができます。

フォーム上のボタンやパネルを入れて、すべてのエッジにパネルのアンカーを設定します。 [ `DataGridView`](https://msdn.microsoft.com/enのような動的に追加するフィールドのために設計されたコントロールを使用し

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

関連する問題