this.Close()的不解
this.Close()的疑惑//退出private void tsmiExit_Click(object sender, EventArgs e){DialogResult result
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 方法就是销毁当前对象,这是胡说八道了。我从来没有看到这个说法的出处。如果你听到这种说法,应该及时指出来一面谣言祸害更多人。
------解决方案--------------------
一面 --> 以免
可能有些人学过一点c语言的 delete 语句,于是把这个 Dispose 方法给想歪了。这种用 c 语言语法来套用 .net 编程的死板学习方法,是有害的。
[解决办法]你的理解根本就不对。
Form2 f2 = new Form2();
f2.Text = "hello"; //f2根本没有打开,那么它存在么?
//f2.ShowDialog(); //不写这个,窗体永远不会显示。
[解决办法]this.close()只会激发,关闭窗口的动作。不代表他会中止当调用函数。如果你this.close()之后(如没有其它阻止代码)再调用this里的某些控件可能会出错