Frage

Ich bin wenig verwirrt darüber, Ereignisse in .NET festzulegen.

Ich habe Methoden, die wie folgt auf MouseDown eingestellt sind.

 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;

Oben Code wird jedes Mal aufgerufen, wenn ein Mausup abgefeuert wird. Da der Code gerade das MouseDown -Ereignis auf eine Methode festlegt, wird die bereits festgelegte oder nur eine andere Ereignismethode in seiner Ereignisliste die alte Methode zurückgesetzt ...

War es hilfreich?

Lösung

ich könnte Antwort "Es kommt darauf an. nicht Entfernen Sie die alten Handler. Dies gilt sicherlich für alle Ereignisse von .NET und sollte für nahezu jedes andere gut gestaltete Ereignis zutreffen.

Wenn Sie ein Ereignis aus der Liste entfernen möchten, verwenden Sie die -= Operator.

Wenn Sie selbst ein Ereignis definieren, können Sie dieses Verhalten überschreiben, indem Sie das überschreiben add-Accessor oder der remove-Accessor. In einem solchen Fall sind Sie für die ordnungsgemäße Aufbewahrung der Event -Handler verantwortlich. Dies ist jedoch kaum notwendig, um von Hand zu tun.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top