2009-09-25 24 views
1

J'ajoute un tableau d'objets Panel (qui à leur tour contiennent d'autres éléments) à un formulaire lors de l'exécution. Ensuite, je l'attribution d'un événement de clic à chaque panneau dans une boucle comme ceci:Détection de la souris Cliquez sur une matrice de contrôles

pnlInstrument[index].Click += pnlInstrument_Click; 

La fonction vide clic ressemble à ceci:

private void pnlInstrument_Click(object sender, EventArgs e) 
{ 

} 

L'événement déclenche correctement, mais comment dire quel panneau a été cliqué?

Répondre

5

Utilisez le paramètre sender de la méthode d'événement ..

private void pnlInstrument_Click(object sender, EventArgs e) 
{ 
    Panel panel = (sender as Panel); //This is the panel. 
} 

Edit: Pour commentaires de l'indice se ..

private void pnlInstrument_Click(object sender, EventArgs e) 
{ 
    Panel panel = (sender as Panel); //This is the panel. 
    int panelIndex = Array.IndexOf(pnlInstrument, panel); 
}  
+1

me tabassaient au coup de poing, monsieur. +1;) – JustLoren

+0

Je le reproche à une surexposition! –

+0

À mi-chemin! Puis-je obtenir l'index de l'objet dans le tableau à partir de cela? –

0

Pourquoi ne pas:

pnlInstrument[index].Click += pnlInstrument_Click; 
pnlInstrument[index].Tag += index; 

private void pnlInstrument_Click(object sender, EventArgs e) 
{ 
    Panel pnl = (Panel)sender; 
    int index = (int)pnl.Tag; 
} 
Questions connexes