3 votes

Événement de clic d'étiquette

J'essaie de créer un événement de clic pour un groupe de tableaux qui sont créés dynamiquement comme ceci :

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

    }

Je reçois une erreur : "Le nom 'LB' n'existe pas dans le contexte actuel" parce que je crée LB dans la boucle et je ne suis pas assez intelligent pour savoir comment déclarer LB afin de pouvoir l'utiliser en dehors de la boucle.

En outre, je voudrais passer au nom de l'étiquette (listBoxItem) sur l'événement de clic et l'avoir où LB est dans l'appel WebBrowser est. Comme : webBrowser1.Navigate(" http://www.mysite/ " + LB);//Naviguer vers le site sur l'étiquette

9voto

keyboardP Points 44625

Votre LB est hors de portée, vous devez le déplacer dans la boucle. (Aussi, le gestionnaire que vous avez montré est appelé LB_Click mais vous essayez d'assigner PB_Click ; je suppose que c'était une faute de frappe).

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

El sender dans votre gestionnaire d'événement sera l'étiquette qui a été cliquée.

protected void LB_Click(object sender, EventArgs e)
{
    //attempt to cast the sender as a label
    Label lbl = sender as Label; 

    //if the cast was successful (i.e. not null), navigate to the site
    if(lbl != null)
        webBrowser1.Navigate("http://www.mysite/" + lbl.Text);
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X