this.Close()的疑惑
//退出
private void tsmiExit_Click(object sender, EventArgs e)
{
DialogResult result=MessageBox.Show("确定要退出吗","提示",MessageBoxButtons.OKCancel,MessageBoxIcon.Question);
if (result==DialogResult.OK)
{
this.Close();
lf.Close();
}
}
其中lf 是我的第一个窗体,this是我的第二个窗体,如果按我的理解当执行到this.Close()时,此时当前窗体已经被关闭了,就不会再往下执行了,为什么我调试的时候程序执行到了lf.Close()?
------解决方案--------------------那你的lf应该是主窗体 主要主窗体没有关闭 程序仍然可以继续往下执行的
你可以把
this.Close();
lf.Close();
顺序颠倒一下 变成
lf.Close();
this.Close();
这时侯 this.Close(); 应该就不能执行了 当然 前提是lf是主窗体
------解决方案--------------------窗体和程序没有关系,窗体关闭了,这个窗体的方法一样能运行,
------解决方案--------------------
是的。只有return语句和丢出异常才可以“不会再往下执行了”。
------解决方案--------------------
谁跟你说的进入了 dispose 方法就是 GC “清理掉”对像啊?GC在清理之前,会去掉 Dispose 方法,因此一般来说用不着画蛇添足地去自己调用 Dispose 方法。但是反过来说,代码调用 Dispose 方法(例如Close方法间接调用了 Dispose 方法),并不会去强迫 GC 去“清理掉”当前对象。
有人说调用 Dispose 方法就是销毁当前对象,这是胡说八道了。我从来没有看到这个说法的出处。如果你听到这种说法,应该及时指出来一面谣言祸害更多人。
------解决方案--------------------