2013-11-23 30 views
0

如何在運行時在Visual Studio C#中創建標籤?我有這個:在運行時添加標籤

 Label test = new Label(); 
     test.Location = new Point(1,1); 
     test.Text = "Working"; 

但它沒有顯示出來。我見過像這樣使用:

Controls.Add(test); 

但我剛剛得到的錯誤:The name 'Controls' does not exist in the current context

編輯:

 public override void OnCollision() 
    { 
     Label test = new Label(); 
     test.Location = new Point(1,1); 
     test.Text = "Working"; 
     test.Enabled = true; 
     this.Controls.Add(test); 
    } 

一個按鈕被按下時的方法運行。

+0

你在哪裏添加這個標籤? – 2013-11-23 22:22:11

回答

0

嘗試

Page.Controls.Add(test);

在隱藏文件的代碼。如果這不起作用,你能從aspx.cs文件發佈更多代碼嗎?

+0

我是新來的,所以我不知道你的男人是由「後面的代碼」代碼。 – user3026046

+0

這就是幾乎所有的相關代碼。整個方法是: public override void OnCollision() { Label test = new Label(); test.Location = new Point(1,1); test.Text =「工作」; test.Enabled = true; 012.JPG.Page.Controls.Add(test); } 它通過點擊一個按鈕來調用。 – user3026046

+0

你有一個以'aspx.cs'結尾的文件,它是aspx頁面文件的代碼嗎?例如Default.aspx將有一個Default.aspx.cs文件,它是C#代碼所在的地方。 –

0

這取決於你在哪裏書面方式Controls.Add(test);

,但我幾乎可以肯定,如果你this.Controls.Add(test);將解決您的問題

+0

如果你已經在課堂上,使用'this'或不使用它。也許他在課外或類似的地方使用它。 – 2013-11-23 22:49:51

+0

它沒有,但我得到一個新的錯誤: 'Event.Text'沒有包含'Controls'的定義,也沒有找到擴展方法'Controls'接受類型'Event.Text'的第一個參數) – user3026046

+0

它寫在其他代碼之後 – user3026046

0

更新:是不是這樣的事情你正在尋找?

class labels 
{ 
    public static void addLabel(Control ctrl) 
    { 
     Label test = new Label(); 
     test.Location = new Point(1, 1); 
     test.Text = "Working"; 
     ctrl.Controls.Add(test); 
    } 
} 

private void button1_Click(object sender, EventArgs e) 
{ 
    labels.addLabel(this); 
} 

您可以將類的部分代碼放在類文件中。你需要添加'使用System.Windows.Forms;'和'使用System.Drawing;'。然後,您可以在項目中的其他文件中使用addLabel方法。

+0

它的確如此!這是進步。但是當我從另一個班級打電話時,爲什麼不行呢?需要做什麼? – user3026046