【问题标题】:Having dynamically created label on separate lines在单独的行上动态创建标签
【发布时间】:2017-09-13 06:23:54
【问题描述】:
我使用以下方法在单击按钮时创建一组动态小部件并在标签中显示数组的内容!
public void addLabel()
{
for (int i = 0; i < array.Length; i++)
{
Label lbl = new Label();
lbl.Text = array[i]+"\n";
lbl.AutoSize = true;
flowLayoutPanel1.Controls.Add(lbl);
}
}
我面临的问题是一些标签显示在同一行,但我希望每行只有一个标签!如何修改我的代码?
【问题讨论】:
标签:
c#
winforms
newline
labels
【解决方案1】:
你应该像这样使用flowLayoutPanel1.SetFlowBreak(lbl, true);:
for (int i = 0; i < array.Length; i++)
{
Label lbl = new Label();
lbl.Text += array[i] + "\n";
lbl.AutoSize = true;
flowLayoutPanel1.Controls.Add(lbl);
flowLayoutPanel1.SetFlowBreak(lbl, true);
}
但是,目前您正在循环的每次迭代中创建label。如果您只需要一个带有换行符的标签,您可以如下更改代码:
Label lbl = new Label();
for (int i = 0; i < array.Length; i++)
{
lbl.Text += array[i] + "\n";
}
lbl.AutoSize = true;
flowLayoutPanel1.Controls.Add(lbl);
【解决方案2】:
你可以使用它。这很简单……
public void addLabel()
{
for (int i = 0; i < array.Length; i++)
{
Label lbl = new Label();
lbl.Text = array[i] + "\n";
lbl.AutoSize = true;
flowLayoutPanel1.Controls.Add(lbl);
flowLayoutPanel1.FlowDirection = FlowDirection.TopDown;
}
}
【解决方案3】:
试试这个
int lblStartPosition = 100;
int lblStartPositionV = 25;
for (int i = 0; i < array.Length; i++)
{
Label lbl = new Label();
lbl.Text = array[i]+"\n";
lbl.AutoSize = true;
lbl.Location = new System.Drawing.Point(lblStartPosition , lblStartPositionV);
flowLayoutPanel1.Controls.Add(lbl);
lblstartPositionV += 30;
}