masterfy

 

在窗体的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:继承重写 

posted on 2007-04-05 21:04  masterfy  阅读(751)  评论(2编辑  收藏  举报

导航