2014-02-25 16 views
1

我不知道是否清楚。我的意思是一個表單有一個輸入文本框和一個按鈕。如果我在文本框中輸入5並單擊按鈕,表單將添加5個標籤... 問題是我不知道它是5或4或3 ......在代碼運行之前和輸入。如何根據後面的輸入添加更多標籤?

我不知道如何添加標籤以及如何定義或獲取它們的名稱,以便稍後在代碼中使用它們。

我只是學習與VS使用C#的Windows應用程序開發...... 而且這也是我的第一個問在stackoverflow請原諒我,如果它不明確。有沒有人可以幫助我?

回答

3

讓我們拆你的整個問題轉化爲認識幾個步驟:

  1. 什麼基本的路線,你問,是如何在動態添加控件一個winform,在你的情況下,控件是標籤,所以用下面的函數包裝你的標籤創建邏輯:

    protected Label CreateLabel(string Id, string text) 
    { 
        Label lbl = new Label(); 
        lbl.Name = Id; 
        lbl.Text = text; 
        return lbl; 
    } 
    
  2. 現在,你需要添加儘可能多的標籤的數量在給定的文本框和在點擊一個按鈕進入,所以可能類似下面的按鈕的單擊事件:

    protected void button_Clicked(object sender, EventArgs e) 
    { 
        //make sure nothing invalid string comes here 
        int counter = Convert.ToInt32(txtCount.text); 
    
        for(int i=0;i<counter;i++) 
        { 
         var lbl = CreateLabel("rand"+i, "Label" +i); 
         container.Controls.Add(lbl);//container can be your form 
        } 
    } 
    
  3. 現在基本問題的WinForms你會面對,將是關於這些動態添加標籤的定位。最簡單的方法是將標籤添加到winforms FlowLayoutPanel。它會自動對齊控件。還有其他佈局控件可用。所以這樣做:

    阻力和您的窗體上放置一個FlowLayoutPanel的,並給它取名爲「容器」,放心

+0

或'Func鍵<字符串,標籤> CreateLabel =文本=> {...};' – Cynede

+0

這就是我需要的,非常感謝你 – Fanl

+0

@Fanl在這種情況下,你應該把它標記爲答案 –

2

例如:

for(var i=0; i<N; i++) { 
    var l= new Label(); 
    l.Text = "some name #" + i.ToString(); 
    l.Width = 200; 
    l.Location = new Point(30, 20); 
    parent.Controls.Add(l); 
} 
0

您可以使用此爲:

Label[] arrLabel; 
    int num = 0; 
    int.TryParse(textBox1.Text, out num); 
    arrLabel = new Label[num]; 
    for (int i = 0; i < num; i++) 
    { 
     arrLabel[i] = new Label(); 
     arrLabel[i].Text = "Label #" + (i+1); 
     arrLabel[i].Width = 20; 
     arrLabel[i].Location = new Point(30+10*(i+1), 20); 
     this.Controls.Add(arrLabel[i]); 
    } 
相關問題