2016-03-24 6 views
1

Was ich versuche zu tun: Erzeugt eine Liste anklickbarer Links, die, wenn Sie darauf klicken, ein detaillierteres Fenster darüber neben ihnen anzeigen.Dynamisch generierte LinkLabels - Übergabe eindeutiger Informationen an den Handler

Was ich nicht herausfinden kann, ist, wie man das LinkLabel identifiziert, nachdem es geklickt hat.

Hier ist mein Code so weit:

if (reader.HasRows) 
     { 
      lore_output_panel.Controls.Clear(); 
      string lore_search_returns = ""; 
      int i = 0; 
      LinkLabel[] itemfound = new LinkLabel[20]; 
      while (reader.Read() && i < 20) 
      { 
       itemfound[i] = new LinkLabel(); 
       itemfound[i].Text = reader["name"].ToString(); 
       Point p = new Point(0, 0 + (15 * i)); 
       itemfound[i].Location = p; 
       itemfound[i].Visible = true; 
       itemfound[i].AutoSize = true; 
       itemfound[i].Show(); 
       itemfound[i].Name = "loreitem" + i; 
       itemfound[i].LinkClicked += new LinkLabelLinkClickedEventHandler(this.linkClicked); 
       lore_output_panel.Controls.Add(itemfound[i]); 
       i++; 
       //lore_search_returns += reader["name"] + "\r\n"; 
      } 
      lore_output.Text = lore_search_returns; 
     } 
     else 
     { 
      lore_output.Text = "ITEM NOT FOUND\r\n" + sql; 
     } 
     m_dbConnection.Close(); 
    } 
    private void linkClicked(object sender, LinkLabelLinkClickedEventArgs e) 
    { 
     string testname = this.Name; 
     MessageBox.Show(testname); 
    } 

Mit diesem Code, wenn der Link angeklickt wird, zeigt er nur den Namen des Formulars. Ich brauche eine Art eindeutiger Bezeichner, der auf dem Klick angezeigt wird, damit ich feststellen kann, auf welches Link-Label geklickt wurde. Gibt es eine Möglichkeit, den Namen des Linklabels, über das ich geklickt habe, an den Click-Ereignishandler weiterzugeben?

Ich habe das Gefühl, es kann mit Tags zu tun haben (wie an diesem Link gesehen) Making dynamically created linklabels clickable in Winforms, aber ich verstehe nicht.

+1

'string testName = ((LinkLabel) sender) .Name;' – LarsTech

+0

danke! Gibt es eine Möglichkeit, deinen Kommentar als Antwort zu markieren? – DerekConlon

Antwort

0

Sie sind verwirrend diese die Form mit Absender die tatsächliche link. Sie können den Absender als linkLabel darstellen und dann auf seine Namen zugreifen, ohne auf die Eigenschaft tag zugreifen zu müssen, die auch zusätzliche Daten enthalten kann.

z.B.

private void linkClicked(object sender, LinkLabelLinkClickedEventArgs e) 
{ 
    string testname = ((LinkLabel)sender).Name; 
    MessageBox.Show(testname) 
} 
+0

süß, danke! – DerekConlon

Verwandte Themen