2017-03-24 55 views
0

我是新來的C#,我試圖更新動態生成的標籤中的值,當我按下按鈕。但它不會覆蓋表格上的標籤。c#如何在運行時更新動態生成的標籤

namespace WindowsFormsApplication4 
{ 
    public partial class Form1 : Form 
    { 

     int b = 1; 
     public Form1() 
     { 
      InitializeComponent(); 
     } 

     private void button1_Click(object sender, EventArgs e) 
     { 
      Label label = new Label(); // used to print users 

      label.Text = String.Format("{0}", b); 

      label.Left = 10; 
      label.Top = 25; 
      this.Controls.Add(label); 

      b = b + 1; 

      Console.WriteLine(b); 

     } 

    } 
} 
+1

我困惑。您是否嘗試更新標籤或每次單擊按鈕時創建一個新標籤?現在你每次都創建一個新的。 – itsme86

+0

@ itsme86我想刪除以前的標籤並使用更新的值創建新的標籤 – Mubi

+0

這引出了問題....爲什麼不更新現有標籤的文本? – itsme86

回答

1

爲什麼要刪除舊的而不是更新它?一旦更新,結果是一樣的。初始化Forms控件的方法很多,請參閱InitializeComponent()。您將更好地更改已有標籤的Text屬性。

private void button1_Click(object sender, EventArgs e) 
    { 
     myLabelsDesignName.Text = String.Format("{0}", b); 


     b = b + 1; 

     Console.WriteLine(b); 

    } 
+0

好吧,如果我生成例如在一個列中的表單上生成10個標籤,並在其中插入值,那麼我想刪除第4個標籤......我該怎麼做? – Mubi

+0

這是一個非常模糊的問題,但我會盡我所能。爲了生成,您應該使用表單設計器來定位您預計需要的所有標籤。這將生成所有自動生成的代碼以初始化它們。確保你給他們一個DesignName。然後在你的cs代碼中,你可以簡單地改變Visible屬性,這取決於你是否想要看到給定的標籤。 – schulmaster

+1

在這種情況下發件人是一個按鈕,並且大概不是要更改的標籤。因此,不需要將發件人投射到Label以獲取標籤參考,他需要一種方法來引用特定的標籤。 –

0

爲了做到你想要的,你需要一種方法來引用前面的標籤。你可以做,使用同樣的方法,你用來跟蹤b

int b = 1; 
Label labelOnForm; 
public Form1() 
{ 
    InitializeComponent(); 
} 

private void button1_Click(object sender, EventArgs e) 
{ 
    if (labelOnForm != null) 
    { 
     this.Controls.Remove(labelOnForm); 
     labelOnForm.Dispose(); 
    } 

    Label label = new Label(); // used to print users 
    label.Text = String.Format("{0}", b); 

    label.Left = 10; 
    label.Top = 25; 
    this.Controls.Add(label); 

    labelOnForm = label; 

    b = b + 1; 

    Console.WriteLine(b); 
} 

但是,您可以簡單地更新現有的標籤,而不是創建一個新的每次:

int b = 1; 
Label labelOnForm; 
public Form1() 
{ 
    InitializeComponent(); 
} 

private void button1_Click(object sender, EventArgs e) 
{ 
    if (labelOnForm == null) // label doesn't exist yet 
    { 
     Label label = new Label(); // used to print users 

     label.Left = 10; 
     label.Top = 25; 
     this.Controls.Add(label); 

     labelOnForm = label; 
    } 

    labelOnForm.Text = String.Format("{0}", b); 

    b = b + 1; 

    Console.WriteLine(b); 
} 
+0

itsme86謝謝,我會試試看 – Mubi