Need I remove controls after disposing them?

.net, .net-2.0, c#, controls, dispose

Solution

No, you don't. I tried it.

You can paste the following code into LINQPad:

var form = new Form();
var b = new Button();
form.Controls.Add(b);
b.Click += delegate { b.Dispose(); };
Application.Run(form);

EDIT: The control will be removed from the form's `Controls` collection. To demonstrate this, replace the click handler with the following:

b.Click += delegate { b.Dispose(); MessageBox.Show(form.Controls.Count.ToString());};

It will show `0`.

2nd EDIT: `Control.Dispose(bool disposing)` contains the following code:

                if (parent != null) { 
                    parent.Controls.Remove(this); 
                }

Problem

.NET 2 ``` // dynamic textbox adding myTextBox = new TextBox(); this.Controls.Add(myTextBox); // ... some code, finally // dynamic textbox removing myTextBox.Dispose(); // this.Controls.Remove(myTextBox); ?? is this needed ``` Little explanation - Surely, if I Dispose a control I will not see it anymore, but anyway, will remain a "Nothing" in the parent controls collection? - need I also, like MSDN recommends, remove all handlers from the control?

Original source