C# - Removing event handlers - FormClosing event or Dispose() method

Posted by Andy on Stack Overflow See other posts from Stack Overflow or by Andy
Published on 2010-05-02T17:47:32Z Indexed on 2010/05/02 17:58 UTC
Read the original article Hit count: 385

Suppose I have a form opened via the .ShowDialog() method.

At some point I attach some event handlers to some controls on the form.

e.g.

// Attach radio button event handlers.
this.rbLevel1.Click += new EventHandler(this.RadioButton_CheckedChanged);
this.rbLevel2.Click += new EventHandler(this.RadioButton_CheckedChanged);
this.rbLevel3.Click += new EventHandler(this.RadioButton_CheckedChanged);

When the form closes, I need to remove these handlers, right?

At present, I am doing this when the FormClosing event is fired.

e.g.

private void Foo_FormClosing(object sender, FormClosingEventArgs e)
{
    // Detach radio button event handlers.
    this.rbLevel1.Click -= new EventHandler(this.RadioButton_CheckedChanged);
    this.rbLevel2.Click -= new EventHandler(this.RadioButton_CheckedChanged);
    this.rbLevel3.Click -= new EventHandler(this.RadioButton_CheckedChanged);
}

However, I have seen some examples where handlers are removed in the Dispose() method.

Is there a 'best-practice' way of doing this?

(Using C#, Winforms, .NET 2.0)

Thanks.

© Stack Overflow or respective owner

Related posts about c#

Related posts about winforms