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

EDIT:

 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

Вы уже добавляли этот лейбл? –

ответ

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 = "Working"; test.Enabled = true; Page.Controls.Add (тест); } , и это называется одним нажатием кнопки. – user3026046

+0

У вас есть файл, который заканчивается на 'aspx.cs', который является кодом файла для вашей страницы aspx? например Default.aspx будет иметь файл Default.aspx.cs, в котором находится код C#. –

0

Это зависит от того, где вы сочинительство Controls.Add(test);

, но я почти уверен, что если вы this.Controls.Add(test); решит вашу проблему

+0

Неважно, если вы используете 'this' или нет, если вы уже находитесь внутри класса. Вероятно, он использует его вне класса или что-то подобное. –

+0

Это не так, но я получаю новую ошибку: «Event.Text» не содержит определения для «Элементы управления» и никакого метода расширения «Элементы управления», принимающие первый аргумент типа «Event.Text», могут быть найдены (вам не хватает директивы использования или ссылки на сборку?) – user3026046

+0

Это написано сразу после другого кода – user3026046

0

Update: Является ли это что-то вроде этого вы ищете?

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

Вы можете поместить часть класса в класс в файл класса. Вам нужно добавить 'using System.Windows.Forms;' и 'using System.Drawing;'. Затем вы сможете использовать метод addLabel в других файлах вашего проекта.

+0

Он делает! Это прогресс. Но почему это не работает, когда я называю это из другого класса? Что нужно сделать? – user3026046

Смежные вопросы