2010-11-23 42 views
1

Je travaille en studio visuel et essaie d'obtenir des informations à partir d'une cellule DataGridView lorsque l'utilisateur double-clique dessus. J'ai fondamentalement mis en place l'événement CellDoubleClick comme tout autre événement Click mais cela ne semble pas fonctionner.Visual C# - Associer un gestionnaire d'événements à l'événement CellDoubleClick

code:

Form1.cs

private void dataGridView1_CellDoubleClick(Object sender, DataGridViewCellEventArgs e) 
    { 

     System.Text.StringBuilder messageBoxCS = new System.Text.StringBuilder(); 
     messageBoxCS.AppendFormat("{0} = {1}", "ColumnIndex", e.ColumnIndex); 
     messageBoxCS.AppendLine(); 
     messageBoxCS.AppendFormat("{0} = {1}", "RowIndex", e.RowIndex); 
     messageBoxCS.AppendLine(); 
     MessageBox.Show(messageBoxCS.ToString(), "CellDoubleClick Event"); 
    } 

Code Pertinent dans Form1.Designer.cs

this.dataGridView1.CellDoubleClick += new System.EventHandler(this.dataGridView1_CellDoubleClick); 

Je reçois une erreur dans le code Form1.Designer qui dit, " Aucune surcharge pour 'dataGridView1_CellDoubleClick' ne correspond au délégué 'System.EventHandler'

H Comment puis-je obtenir le double-clic pour fonctionner correctement? Merci.

Répondre

2

L'événement CellDoubleClick est un DataGridViewCellEventHandler, pas un EventHandler`.

Vous devez ajouter les poignées d'événement à l'aide du concepteur, qui utilisera automatiquement le type de délégué approprié.
Vous ne devez pas modifier le code généré par le concepteur manuellement.

En général, lors de l'ajout de gestionnaires d'événements, vous ne devez pas créer explicitement le délégué.
Au lieu de cela, vous pouvez écrire

myGrid.CellDoubleClick += MyGrid_CellDoubleClick; 
+0

Ok, je ne suis pas terriblement bon à Visual Studio et j'étais un peu à la fin de mon esprit en essayant d'obtenir un double clic pour travailler. Après avoir lu votre commentaire, j'ai regardé de près le concepteur et j'ai trouvé le bouton des événements. Maintenant ça marche. Merci. – Rupert

+0

Si vous avez le temps, s'il vous plaît expliquez-moi comme si j'avais 5 ans pourquoi il n'est pas possible de faire simplement + = new EventHandler (MyGrid_CellDoubleClick); pour gérer cet événement, je ne comprends pas. :) – JazzCat

+0

@JazzCat: Parce que cet événement est déclaré comme un type différent. https://msdn.microsoft.com/en-us/library/ms173171 – SLaks