2013-07-31 4 views
3

Я пытаюсь тоже создать событие щелчка для группы ярлыках, лейблах, которые создаются динамически, как это:Ярлык Нажмите Event

private void AddLBL_Btn_Click(object sender, EventArgs e) 
    { 
     int ListCount = listBox1.Items.Count; 

     int lbl = 0; 

     foreach (var listBoxItem in listBox1.Items) 
     { 
      Label LB = new Label(); 
      LB.Name = "Label" + listBoxItem.ToString(); 
      LB.Location = new Point(257, (51 * lbl) + 25); 
      LB.Size = new Size(500, 13); 
      LB.Text = listBoxItem.ToString(); 
      Controls.Add(LB); 

      lbl++; 
     } 


     LB.Click += new EventHandler(PB_Click);// error here 


    } 

    protected void LB_Click(object sender, EventArgs e) 
    { 



     webBrowser1.Navigate("http://www.mysite/" + LB);//Navigate to site on label 

    } 

Я получаю сообщение об ошибке: «Название„LB“не существует в текущий контекст ", потому что я создаю LB внутри цикла, и я недостаточно умен, чтобы знать, как объявить LB, чтобы я мог использовать его за пределами цикла.

Кроме того, я хотел бы передать имя метки (listBoxItem) на событие click и иметь его там, где находится LB в вызове WebBrowser. Например: webBrowser1.Navigate («http://www.mysite/» + LB); // Перейти на сайт на этикетке

ответ

6

Ваш объект LB не входит в сферу действия, вам нужно переместить его в пределах цикла. (Кроме того, обработчик, который вы указали, называется LB_Click, но вы пытаетесь назначить PB_Click; я предполагаю, что это была опечатка).

foreach (var listBoxItem in listBox1.Items) 
{ 
    Label LB = new Label(); 
    LB.Name = "Label" + listBoxItem.ToString(); 
    LB.Location = new Point(257, (51 * lbl) + 25); 
    LB.Size = new Size(500, 13); 
    LB.Text = listBoxItem.ToString(); 
    LB.Click += new EventHandler(LB_Click); //assign click handler 
    Controls.Add(LB); 

    lbl++; 
} 

В sender в обработчике событий будет метка, которая была нажата.

+0

Я добавил LB.Click + = новый EventHandler (PB_Click) внутри цикла foreach, и теперь он отлично работает. Кроме того, webBrowser1.Navigate ("http: //www.mysite/" + lbl.Text); отлично работает. благодаря – eltel2910