我有一个按钮点击事件处理程序,伪代码如下:
private void btnSave_Click(object sender, EventArgs e)
{
if(txt.Text.length == 0)
this.Close();
else
// Do something else
// Some other code...
}
这只是一些简单的代码,但重点在于,当文本长度为零时,我想关闭表单。但是,代码执行了 // Some other code 部分,而不是关闭表单。在单击事件处理程序完全执行后,然后表单被关闭。
我知道,当我在 this.Close()
后面直接加上 return
,表单就会关闭,但我想知道为什么调用 this.Close()
时表单没有直接关闭。为什么事件处理程序的其余部分会被执行?
.Close()
不会立即关闭窗体,而是向消息泵发送一条消息,请求在完成所有当前工作后关闭窗体,即在处理完所有其他消息后关闭。 - Kris Vandermotten