Does metodi di impostazione per un evento ripristinare il vecchio metodo o aggiunge un altro metodo nella sua lista degli eventi?

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

Domanda

sto po 'confuso su come impostare gli eventi in .NET.

Ho metodi che è impostato per MouseDown come segue.

 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;
codice

Sopra è chiamato ogni volta che un MouseUp viene licenziato. Poiché il codice è appena impostazione evento MouseDown a un metodo, sarà ripristinare il vecchio metodo che è stato già impostato o tenerlo e solo un altro metodo di evento nella sua lista degli eventi ...

È stato utile?

Soluzione

I potrebbe risposta "dipende", tuttavia, se gli eventi sono progettati secondo le linee guida NET, l'aggiunta di un evento il modo di fare, significa aggiungere a un elenco dei gestori di eventi e < em> non rimuovere i vecchi gestori. Questo è certamente vero per tutti i propri eventi di .NET e dovrebbe essere vero per quasi ogni altro evento ben progettato.

Se si desidera rimuovere un evento dalla lista, utilizzare l'operatore -=.

Se si definisce un evento da soli, è possibile ignorare questo comportamento sovrascrivendo il add-di accesso o il remove-accesso. In tal caso l'utente è responsabile per la corretta conservazione dei gestori di eventi. Tuttavia, questo non è quasi mai necessario per fare a mano.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top