Need I remove controls after disposing them?

后端 未结 6 2092
闹比i
闹比i 2020-12-15 20:52

.NET 2

// dynamic textbox adding
myTextBox = new TextBox();
this.Controls.Add(myTextBox);

// ... some code, finally

// dynamic textbox rem         


        
6条回答
  •  时光取名叫无心
    2020-12-15 21:43

    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); 
                    }
    

提交回复
热议问题