在窗体的Load时怎么退出窗体?
现在需要在窗体A的OnLoad事件中检查一个条件,如果条件不成立,则退出此窗体,但我在用
this.Close() 或 this.Dispose()时 都会出错:
"执行 CreateHandle() 时无法调用值 Dispose()"
"执行 CreateHandle() 时无法调用值 Close()"
请问这个怎么解决,代码如下
private void A_Load(object sender, EventArgs e)
{
if(条件不成立)
{
this.Close();
}
}
解决方法:
protected override void OnVisibleChanged(EventArgs e)
{
base.OnVisibleChanged(e);
if (定义条件)
this.Close();
}
--------------------------------------------------------
实例:
protected override void OnVisibleChanged(EventArgs e)
{
base.OnVisibleChanged(e);
if (!(pModule.svr != null && pModule.svr.IsRun))
{
this.Close();//在OnLoad事件中,当前窗体的句柄Handle还没有创建完成,所以不能直接进行关闭操作会出错:"执行 CreateHandle() 时无法调用值 Close()"
return;
}
}
注:
1、必须用protected/public,不能用private,否则会报错:
“错误 1 “hnkywz2007.Win.PBClient.OnVisibleChanged(System.EventArgs)”: 虚拟成员或抽象成员不能是私有的 E:\hnky2007new\hnkywz2007\ZYB\PBClient.cs 119 31 hnkywz2007”
2、override:继承重写