| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1522 人关注过本帖
标题:关于窗体调用的异常
只看楼主 加入收藏
thrunight
Rank: 1
等 级:新手上路
帖 子:12
专家分:5
注 册:2009-9-5
结帖率:75%
收藏
已结贴  问题点数:20 回复次数:2 
关于窗体调用的异常
兄弟我现在写个桌面程序,N多个子窗体共继承同一个父窗体,在父窗体中有个导航按钮,用来窗体切换。
现在问题是在子窗体之间的切换的时候在父窗体中总是会出现“执行 CreateHandle() 时无法调用值 Dispose()”
异常,请教各位仁兄看看有没有遇到过的,帮帮忙!!!!在此多谢...
搜索更多相关主题的帖子: 窗体 
2010-12-02 15:54
wangnannan
Rank: 18Rank: 18Rank: 18Rank: 18Rank: 18
等 级:贵宾
威 望:87
帖 子:2546
专家分:9359
注 册:2007-11-3
收藏
得分:20 
程序代码:
楼主看看是否是这样的情况 

例如
现在需要在窗体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”

2override:继承重写

出来混,谁不都要拼命的嘛。 。拼不赢?那就看谁倒霉了。 。有机会也要看谁下手快,快的就能赢,慢。 。狗屎你都抢不到。 。还说什么拼命?
2010-12-02 15:59
thrunight
Rank: 1
等 级:新手上路
帖 子:12
专家分:5
注 册:2009-9-5
收藏
得分:0 
我不是在窗体中的load中关闭其他窗体,而是切换,从A窗体切换到B窗体,出现的这种情况
2010-12-02 16:11
快速回复:关于窗体调用的异常
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.020821 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved