2010-06-03 7 views
2

J'ai une classe que je veux être capable de gérer l'événement de la souris vers le haut pour une grille.Passer un événement dans un constructeur

J'ai essayé de créer avec un appel de méthode statique comme ceci:

MyDataBinding.BindObjectsToDataGrid(ListOfObjectsToBind, myGrid.MouseUp); 

L'objectif final étant que dans la méthode que je voudrais attribuer un délégué à la MouseUp

PassedInMouseUp += myMethodThatWillHandleTheMouseUp; 

semble bon ici (à moi) mais le compilateur étouffe sur la première ligne. Il est dit que je ne peux utiliser MouseUp qu'avec un + = ou un - =.

De toute évidence, je vais à ce sujet dans le mauvais sens. Comment puis-je obtenir une autre classe pour gérer la souris vers le haut sans avoir à:

  • passe dans toute la grille
  • Expose la méthode qui sera la manipulation de la souris comme une méthode publique.

Ou, est-ce juste une limitation et je vais devoir faire l'un des ci-dessus?

Répondre

1

Ceci n'est pas possible sans réflexion.

Comme les propriétés, les événements .Net sont compilés avec une paire de méthodes d'accès - add_EventName et remove_EventName. Il n'y a rien que vous pouvez passer comme argument.

+0

Peut-être que je pourrais faire un délégué qui va ajouter une méthode à l'événement, puis passer cela dans la méthode. (Pour être appelé plus tard.) Cela fonctionnerait-il? --- (Mieux encore je vais aller l'essayer) – Vaccano

+2

Cela fonctionnerait. 'MyDataBinding.BindObjectsToDataGrid (ListOfObjectsToBind, h => monGrid.MouseUp + = h);'. Le paramètre serait un 'Action '. – SLaks

Questions connexes