2013-07-29 4 views
0

Я пытаюсь сделать небольшую типизацию игры с использованием форм и вам нужна помощь с ярлыками. Итак, мне нужно создать несколько ярлыков с другим текстом, и мне интересно, есть ли способ сделать это с помощью Label word = new Label(), чтобы я мог получить контроль над любой или, по крайней мере, сначала созданной меткой в ​​любое время позже?Как управлять несколькими ярлыками

Возможно, есть какая-то конкретная тема, о которой я должен прочитать больше?

+0

Winforms или WPF? –

ответ

0

Вы можете использовать array этикеток и доступ к ним позже индекс

Label []words = new Label[10]; 

Если вы не знаете, во время компиляции, что сколько этикетки вам нужно будет, то вы можете использовать List.

List<Label> lstLabels = new List<Label>(); 
0

Если у вас есть фиксированный предел меток, то вы можете сделать то, что упомянутый выше Адиль и доступ к ним later.Like,

Label []words = new Label[10]; 

Однако если у вас есть динамическое количество меток, чем один из вариантов заключается в том, чтобы добавлять их во время выполнения к форме и позже обращаться к ним с помощью Reflection.

foreach(Control c in yourForm.Controls) 
    if(c is label) 
    { 
     //your code 
    } 
0

Вы можете создать ярлыки как:

Label l = new Label(); 
l.Location = somepoint; 
l.Text = "text" + this.Controls.Count; 
this.Controls.Add(l); 

После получить все метки (в данном примере это будет под события нажатия кнопки):

private void button1_Click(object sender, EventArgs e) 
    { 
     //assuming there might be other controls, 
     //it will get all labels in the form 
     Label[] c = this.Controls.OfType<Label>().ToArray(); 

     //...do what you need 
    } 

Этикетки в том же порядке, что и добавлено.

Если вы хотите, чтобы получить только один ярлык на основе, например, текст метки вошел в текстовое поле (так как вы сказали, что все другой текст):

Label c1 = this.Controls.OfType<Label>().Where(l => l.Text.ToLower() == textBox1.Text.ToLower()).Single();