在 Winforms TableLayoutPanel 中排列控件
Arranging controls in Winforms TableLayoutPanel
我在运行时使用 panel.Controls.Add(control)
向 Winforms TableLayoutPanel 添加控件。
我需要通过先填充第一列然后填充第二列来将控件排列在可变行数的两列中,以实现以下布局:
C1 C4
C2 C5
C3 C6
无论我如何配置面板,它总是按以下顺序填充:
C1 C2
C3 C4
C5 C6
如何更改控件插入的顺序?
使用 tableLayoutPanel1.Controls.Add() 的第二个重载来传递行和列索引:
public virtual void Add(Control control, int column, int row
);
示例:
private void SetTableLayoutPanel()
{
tableLayoutPanel1.RowStyles.Clear();
tableLayoutPanel1.ColumnCount = 2;
tableLayoutPanel1.RowCount = 3;
tableLayoutPanel1.CellBorderStyle = TableLayoutPanelCellBorderStyle.Single;
var counter = 1;
for (int i = 0; i < tableLayoutPanel1.ColumnCount; i++)
{
for (int j = 0; j < tableLayoutPanel1.RowCount; j++)
{
Button b = new Button();
b.Text = "C" + counter;
tableLayoutPanel1.Controls.Add(b, i, j);
counter++;
}
}
}
输出:
我在运行时使用 panel.Controls.Add(control)
向 Winforms TableLayoutPanel 添加控件。
我需要通过先填充第一列然后填充第二列来将控件排列在可变行数的两列中,以实现以下布局:
C1 C4
C2 C5
C3 C6
无论我如何配置面板,它总是按以下顺序填充:
C1 C2
C3 C4
C5 C6
如何更改控件插入的顺序?
使用 tableLayoutPanel1.Controls.Add() 的第二个重载来传递行和列索引:
public virtual void Add(Control control, int column, int row
);
示例:
private void SetTableLayoutPanel()
{
tableLayoutPanel1.RowStyles.Clear();
tableLayoutPanel1.ColumnCount = 2;
tableLayoutPanel1.RowCount = 3;
tableLayoutPanel1.CellBorderStyle = TableLayoutPanelCellBorderStyle.Single;
var counter = 1;
for (int i = 0; i < tableLayoutPanel1.ColumnCount; i++)
{
for (int j = 0; j < tableLayoutPanel1.RowCount; j++)
{
Button b = new Button();
b.Text = "C" + counter;
tableLayoutPanel1.Controls.Add(b, i, j);
counter++;
}
}
}
输出: