Does metodi di impostazione per un evento ripristinare il vecchio metodo o aggiunge un altro metodo nella sua lista degli eventi?
-
25-10-2019 - |
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 ...
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.