2013-11-23 35 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