.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
小解释
- 当然,如果我Dispose 一个控件,我将不再看到它,但无论如何,它在父控件集合中仍将是“Nothing”吗?
- 我还需要按照 MSDN 的建议,从控件中删除所有处理程序吗?
最佳答案
不,你不知道。
我试过了。
您可以将以下代码粘贴到LINQPad 中:
var form = new Form();
var b = new Button();
form.Controls.Add(b);
b.Click += delegate { b.Dispose(); };
Application.Run(form);
编辑:控件将从表单的Controls
集合中删除。为了演示这一点,请将点击处理程序替换为以下内容:
b.Click += delegate { b.Dispose(); MessageBox.Show(form.Controls.Count.ToString());};
它将显示 0
。
2nd 编辑:Control.Dispose(bool disposing)
包含以下代码:
if (parent != null) {
parent.Controls.Remove(this);
}
关于c# - 我需要在处理完控件后删除控件吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2013877/