在VS中的设计器中,例如你双击一个按钮,它会生成这个Click事件处理程序。
订阅代码在designer.cs文件中。
我想知道,在dispose方法中,我是否必须取消事件的订阅?
此外,所有在窗体中的控件在窗体dispose时都会被销毁吗?它实际上会递归地对每个控件调用dispose吗?
关于“它是否会递归地调用每个控件的dispose方法?”这个问题,答案是肯定的。
可以通过在控件的Dispose方法中设置断点来进行简单测试。
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
this.Controls.Add(new SuperButton());
}
}
public class SuperButton : Button
{
protected override void Dispose(bool disposing)
{
//Place breakpoint on the line below
base.Dispose(disposing);
}
}