2017-09-13 3 views
1

次の方法は、ボタンをクリックして動的ウィジェットのセットを作成し、ラベルの配列の内容を表示するために使用されます。別々の行にラベルを動的に作成する

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); 
    } 
} 

私が直面している問題は、いくつかのラベルが同じ行に表示されていますが、各行には1つのラベルだけが必要です。コードを変更するにはどうすればよいですか?

答えて

2

あなたはこのよう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を作成しています。あなただけの行と1つのラベルが必要な場合壊し、あなたは以下のようにコードを変更することができます:あなたはこれを使用することができます

Label lbl = new Label(); 

for (int i = 0; i < array.Length; i++) 
{ 
    lbl.Text += array[i] + "\n"; 
} 
lbl.AutoSize = true; 
flowLayoutPanel1.Controls.Add(lbl); 
+0

これは、上手なメートです:) –

0

この

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; 
} 
1

を試してみてください。これは簡単です...

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; 
    } 
} 
関連する問題