2012-03-01 7 views
5

enter image description hereこんにちは、私はC#で書かれたWindowsフォームアプリケーションを持って動的に

tablelayoutpanel行に列と行を追加します。私は5行と1列を持つtablelayoutpanelを使用します。私の質問は、どのように赤い列と行(写真の赤い色で表示されます)を実行時/動的に行3に追加できるかです。そして、後でそれらにコントロール(ラベル、テキストボックス、ボタン..)を追加するにはどうすればいいですか?アドバイスのため おかげで...ここで

答えて

9

例:

private void GenerateControls() 
{ 
    TableLayoutPanel tableLayoutPanel1 = new TableLayoutPanel(); 
    Button button1 = new Button(); 
    Button button2 = new Button(); 
    PictureBox pictureBox1 = new PictureBox(); 
    TextBox textBox1 = new TextBox(); 
    tableLayoutPanel1.SuspendLayout(); 


    // tableLayoutPanel1 
    tableLayoutPanel1.ColumnCount = 2; 
    tableLayoutPanel1.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 50F)); 
    tableLayoutPanel1.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 50F)); 
    tableLayoutPanel1.Controls.Add(button2, 1, 0); 
    tableLayoutPanel1.Controls.Add(button1, 0, 0); 
    tableLayoutPanel1.Controls.Add(pictureBox1, 0, 1); 
    tableLayoutPanel1.Controls.Add(textBox1, 1, 1); 
    tableLayoutPanel1.Location = new System.Drawing.Point(12, 12); 
    tableLayoutPanel1.Name = "tableLayoutPanel1"; 
    tableLayoutPanel1.RowCount = 2; 
    tableLayoutPanel1.RowStyles.Add(new RowStyle(SizeType.Percent, 20)); 
    tableLayoutPanel1.RowStyles.Add(new RowStyle(SizeType.Percent, 50F)); 
    tableLayoutPanel1.RowStyles.Add(new RowStyle(SizeType.Percent, 30F)); 
    tableLayoutPanel1.Size = new System.Drawing.Size(388, 301); 
    tableLayoutPanel1.TabIndex = 0; 
    tableLayoutPanel1.CellPaint += new TableLayoutCellPaintEventHandler(tableLayoutPanel1_CellPaint); 

    // button1 
    button1.Dock = DockStyle.Fill; 
    button1.Location = new System.Drawing.Point(3, 3); 
    button1.Name = "button1"; 
    button1.Size = new System.Drawing.Size(188, 144); 
    button1.TabIndex = 0; 
    button1.Text = "button1"; 
    button1.UseVisualStyleBackColor = true; 

    // button2 
    button2.Dock = DockStyle.Fill; 
    button2.Location = new System.Drawing.Point(197, 3); 
    button2.Name = "button2"; 
    button2.Size = new System.Drawing.Size(188, 144); 
    button2.TabIndex = 1; 
    button2.Text = "button2"; 
    button2.UseVisualStyleBackColor = true; 

    // pictureBox1 
    pictureBox1.Dock = DockStyle.Fill; 
    pictureBox1.Location = new System.Drawing.Point(3, 153); 
    pictureBox1.Name = "pictureBox1"; 
    pictureBox1.Size = new System.Drawing.Size(188, 145); 
    pictureBox1.TabIndex = 2; 
    pictureBox1.TabStop = false; 
    //pictureBox1.Image = Image.FromFile(@"C:\somepic.jpg"); 

    // textBox1 
    textBox1.Dock = DockStyle.Fill; 
    textBox1.Location = new System.Drawing.Point(197, 153); 
    textBox1.Multiline = true; 
    textBox1.Name = "textBox1"; 
    textBox1.Size = new System.Drawing.Size(188, 145); 
    textBox1.TabIndex = 3; 

    Controls.Add(tableLayoutPanel1); 
    tableLayoutPanel1.ResumeLayout(false); 
    tableLayoutPanel1.PerformLayout(); 
} 

このボイドが国境

void tableLayoutPanel1_CellPaint(object sender, TableLayoutCellPaintEventArgs e) 
{ 
    if (e.Column == 0) 
    { 
     var rectangle = e.CellBounds; 
     rectangle.Inflate(-1, -1); 

     ControlPaint.DrawBorder3D(e.Graphics, rectangle, Border3DStyle.Raised, Border3DSide.All); // 3D border 
    } 
    else if (e.Column == 1 && e.Row == 0) 
    { 
     var rectangle = e.CellBounds; 
     rectangle.Inflate(-1, -1); 

     ControlPaint.DrawBorder(e.Graphics, rectangle, Color.Red, ButtonBorderStyle.Dotted); // dotted border 
    } 
} 
を操作します
関連する問題