如何在表格布局中合并两个单元格

时间:2012-02-22 07:21:38

标签: c# winforms c#-4.0 tablelayoutpanel

我有两行两列。我希望两个单元格的最后一列合并为一列。由于要求我不使用其他设计选项意味着两个tablelayout,其中第一个表布局有两行。我在C#中使用Winforms。

|                       |                    |
|                       |                    |
|                       |                    |
|_______________________|                    |
|                       |                    |
|                       |                    |
|                       |                    |

8 个答案:

答案 0 :(得分:29)

  1. 将任何控件放入表单设计器
  2. 中的单元格中
  3. 选择控件并查看其属性
  4. 查找" ColumnSpan"属性"布局"节
  5. 输入此值的所需列范围
  6. 见图片:

    enter image description here

答案 1 :(得分:6)

以下是如何在代码中执行此操作

//create a label control, add it to the tableLayoutPanel, and merge it into 3 cells.
Label lbl = new Label();
lbl.Location = new Point(0, 0);
lbl.Text = "This is a test label";
MyTableLayoutPanel.Controls.Add(lbl, 0,0);  //start it in cell 0,0
MyTableLayoutPanel.SetColumnSpan(lbl, 3);  //merge 3 columns

答案 2 :(得分:4)

http://msdn.microsoft.com/en-us/library/system.windows.forms.tablelayoutpanel.aspx

例如,您可以在TableLayoutPanel控件中设置RowSpan属性。

答案 3 :(得分:2)

您可以在此处查看合并单元格的标题。

http://en.csharp-online.net/TableLayoutPanel

答案 4 :(得分:1)

您可以在另一个ColumnSpan的单元格中添加RowSpan,而不是设置TableLayoutPanel / TableLayoutPanel属性。然后,您将分割两个单元格,而不是合并两个单元格。在您在问题中提供的示例中,您将左列拆分为两行,而不是将右列合并为一行。

如果您计划将CellBorderStyle属性设置为“None”以外的其他属性,则此方法才有用。我找到了这个答案here,其中CSharpFreak也提出了另一种方法,我没试过。

答案 5 :(得分:0)

在将在表中启动合并的单元格中设置控件的RowSpan属性。即,RowSpan为3将使控件填充其单元格和下面的2个单元格。

ColumnSpan合并到右边。

在代码中,调用SetRowSpan和/或SetColumnSpan方法。

答案 6 :(得分:0)

您可以将此类“合并”属性设置为Control:

假设控件是Label并且您想要合并行,那么您可以按照以下方式执行:

TableLayoutPanel table = new TableLayoutPanel();

Label lbl = new Label();
lbl.Text = "test";
lbl.Dock = DockStyle.Fill;

table.Controls.Add(lbl, 0, 0); //initial position
table.SetRowSpan(lbl,2);

答案 7 :(得分:0)

以下代码应该允许您跨所需数量的行/列

跨越控件
TableLayoutPanel tableLayoutPanel1 = new TableLayoutPanel(); // not required if you already have the control added else where or in designer. 
TextBox textBox1 = new TextBox(); // not required if you already have the control added else where or in designer. 
tableLayoutPanel1.Controls.Add(textBox1);// not required if you already have the control added else where or in designer. 
tableLayoutPanel1.SetColumnSpan(textBox1, 2);
tableLayoutPanel1.SetRowSpan(textBox1, 2);