2018.2.8 为什么调用了this.close()却无法关闭窗口
程序员文章站
2022-07-13 23:17:58
...
先说原因:窗体的FormClosing事件中有阻止窗体关闭的代码。
private void btnClose_Click(object sender, EventArgs e)
{
this.Close();
}
/// <summary>
/// 关闭窗口
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void FormZDT_FormClosing(object sender, FormClosingEventArgs e)
{
ReleaseComObject(this.objZDRegion);
objZDRegion = null;
objSupermap.Refresh();
}
通过Debug,可以看到,单击关闭按钮btnClose后调用this.Close();,之后发生FormClosing事件,执行此事件中的代码。我发现,此代码中objSupermap为null,自然无法Refresh();,错误就出在这,但是不知为什么编译器并没有报错,只表现为无法关闭窗体。
于是更改:
private void btnClose_Click(object sender, EventArgs e)
{
this.Close();
}
/// <summary>
/// 关闭窗口
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void FormZDT_FormClosing(object sender, FormClosingEventArgs e)
{
ReleaseComObject(this.objZDRegion);
objZDRegion = null;
if(objSupermap != null)
{
objSupermap.Refresh();
}
}
解决。