Est-ce que les méthodes de réglage à un événement remis à zéro l'ancienne méthode ou ajoute une autre méthode dans sa liste d'événements?

StackOverflow https://stackoverflow.com/questions/8314651

Question

Je suis peu confus sur la configuration des événements dans .NET.

J'ai méthodes défini pour être MouseDown comme suit.

 if theTool = TMakerTool.tmtSelect then
 begin
   MouseDown += new System.Windows.Forms.MouseEventHandler(@SelectMouseDown);
   Cursor := Cursors.Arrow;
 end
 else
 begin
   MouseDown += new System.Windows.Forms.MouseEventHandler(@Maker_MouseDown);
   Cursor := Cursors.Cross;
 end;

code ci-dessus est appelé chaque fois qu'un mouseup est tiré. Parce que le code couchait événement MouseDown à une méthode, il va réinitialiser l'ancienne méthode qui a déjà été mis ou le garder et juste une autre méthode d'événement dans sa liste d'événements ...

Était-ce utile?

La solution

peut réponse « ça dépend », cependant, si les événements sont conçus selon les directives .NET, l'ajout d'un événement comme vous le faites, des moyens d'ajouter à la liste des gestionnaires d'événements et < em> pas supprimer les anciens gestionnaires. Cela est certainement vrai pour les événements propres de tous .NET et devrait être vrai pour à peu près tout autre événement bien conçu.

Si vous voulez supprimer un événement de la liste, utilisez l'opérateur -=.

Si vous définissez vous-même un événement, vous pouvez modifier ce comportement en remplaçant la add-accesseur ou remove-accesseur. Dans ce cas, vous êtes responsable de bon stockage des gestionnaires d'événements. Cependant, cela est rarement nécessaire de le faire à la main.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top