2017-10-18 22 views
1
Label[] l1 = new Label[30];  
DataTable dt = ConsoleApp2.CitiesDB.getCities(this.region); 
       foreach(DataRow row in dt.Rows) 
       { 
        count++; 
        string city = row.Field<string>("city"); 
        l1[count] = new Label(); 
        l1[count].Location = new System.Drawing.Point(x,y); 
        l1[count].Size = new Size(140, 80); 
        l1[count].Font = new System.Drawing.Font("Century Gothic", 8.5F); 
        l1[count].Text = city; 
        x = x + 260; 
        this.Controls.Add(l1[count]); 
        this.Refresh(); 
        if(count == 4 || count %4 ==0) 
        { 
         y = y + 150; 
         x = 40; 
        } 
       //l1[count].Click += new EventHandler(l1_click); 
      } 

J'ai donc créé des étiquettes dynamiques (chaque étiquette est un nom de ville). comment puis-je rendre chaque étiquette cliquable? J'ai un formulaire de registre - ce que je veux, c'est que l'utilisateur clique sur "new york" puis dans la boîte de texte "city" il apparaîtra. le chemin avec le EventHandler ne fonctionne pas pour moi) ;. Que puis-je faire? ce que je veux dire dans le code qui ne marche pas le travail:C# ajout d'un événement de clic dynamique

protected void l1_click(object sender, EventArgs e) 
    { 
     RegisterForm register = new RegisterForm(username,email,password,address,phone); 
     register.state.Text = region; 
     register.city.Text = l1[count].Text; 
     register.Show(); 
    } 

remerciements (:

Répondre

1

Assigner un événement de clic pour chaque étiquette:

l1[count].Click += l1_click; 

En cas de clic utiliser l'argument de l'expéditeur pour voir quels étiquette a été cliqué sur:

protected void l1_click(object sender, EventArgs e) 
{ 
    Label lbl = (Label)sender; 
    MessageBox.Show(lbl.Text); 
+0

Merci, cela a fonctionné (: – Daniel

+0

Cochez une nswer comme correct pour quelques points –