如何动态添加控件对
问题描述:
我试图动态添加一些控件(目前文本框和标签)到表单。没有一组数量要绘制的对。如何动态添加控件对
的我想要实现实例。
正如您所看到的,表格耗尽了空间,因此它移到了右侧。
目前,我使用的是TableLayoutPanel
一个FlowLayoutPanel
内。 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);
}
答
可以使用具有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 });
}
}
使用(设计用于动态地添加字段的控制,如['DataGridView'] https://msdn.microsoft.com/en -us /库/ system.windows.forms.datagridview(v = vs.110)的.aspx),而不是一个'TableLayoutPanel'。 –