¿Establecer métodos en un evento restablece el método anterior o agrega otro método en su lista de eventos?
-
25-10-2019 - |
Pregunta
Estoy poco confundido sobre establecer eventos en .NET.
Tengo métodos establecidos en Mousedown de la siguiente manera.
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;
El código anterior se llama cada vez que se dispara un mouseup. Debido a que el código solo está configurando el evento de MouseDown en un método, restablecerá el método anterior que ya estaba configurado o lo mantendrá y solo otro método de evento en su lista de eventos ...
Solución
yo pudo Respuesta "Depende", sin embargo, si los eventos se diseñan de acuerdo con las pautas de .NET, agregando un evento como lo hace, significa agregarlo a una lista de manejadores de eventos y no Retire los viejos manejadores. Esto es ciertamente cierto para todos los eventos de .NET y debería ser cierto para casi cualquier otro evento bien diseñado.
Si desea eliminar un evento de la lista, use el -=
operador.
Si define un evento usted mismo, puede anular este comportamiento anulando el add
-Accesor o el remove
-Ascorsor. En tal caso, usted es responsable del almacenamiento adecuado de los manejadores de eventos. Sin embargo, esto casi nunca es necesario hacer a mano.