C#为什么form.Close()没有关闭表单?

我有一个按钮单击事件处理程序与以下伪代码
private void btnSave_Click(object sender,EventArgs e)
{
  if(txt.Text.length == 0)
     this.Close();
  else
     // Do something else

  // Some other code...
}

这只是一些简单的代码,但重点是,当文本长度等于零时,我想关闭表单.但是代码不是关闭表单而是执行部分//其他一些代码.单击事件处理程序完全执行后,表单将关闭.

我知道,当我在此之后立即返回时.Close()表单将关闭,但是我想知道为什么在调用this.Close()时表单不会直接关闭.为什么执行事件处理程序的其余部分?

解决方法

执行事件处理程序的其余部分是因为您没有离开该方法.它是如此简单.

调用this.Close()不会立即“删除”表单(和当前事件处理程序).如果没有对表单的更多引用,表单将在稍后由垃圾收集器收集.

this.Close()不是常规方法调用,除非方法抛出异常,否则将保留在当前方法的上下文中.

相关文章

在项目中使用SharpZipLib压缩文件夹的时候,遇到如果目录较深,则压缩包中的文件夹同样比较深的问题。比...
项目需要,几十万张照片需要计算出每个照片的特征值(调用C++编写的DLL)。 业务流程:选择照片...
var array = new byte[4]; var i = Encoding.UTF8.GetBytes(100.ToString("x2"));//...
其实很简单,因为Combox的Item是一个K/V的object,那么就可以把它的items转换成IEnumerable<Dic...
把.net4.6安装包打包进安装程序。 关键脚本如下: 头部引用字符串对比库 !include "WordFunc....
项目需求(Winform)可以批量打印某个模板,经过百度和摸索,使用iTextSharp+ZXing.NetʿreeSp...