¿Establecer métodos en un evento restablece el método anterior o agrega otro método en su lista de eventos?

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

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 ...

¿Fue útil?

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top