梦想 就像鸡蛋
要么孵化 要么臭掉
要么孵化 要么臭掉
在Modal Dialog中操作Modless Form
当使用 form.ShowDialog(); 创建一个模式对话框的时候,如果在这个 Modal Dialog Form 的构造函数又创建了一个新的 Form 并调用 form.Show() 来显示它,然后在 模式对话框的 Load 事件或其它后续的事件触发时把新创建的 modless form 给 Close 掉的话(比如当对话框创建过程中需要比较长的数据加载过程而调用了一个进度条窗口来体现数据加载的进度),会发现当这个由 modal dialog 自己创建的 form 被 Close 的时候, modal dialog 本身也同时被 Close 掉了。
导致模式对话框被自动 Close 的原因是 form.ShowDialog() 的行为模式是将当前活动窗口设置为它的所有者( Owner ),这在一般情况下自然就是调用 ShowDialog 方法的那个 Form 。但如果在这个模式对话框的构造函数里面又创建了一个新的 Form 并 Show 出来的话,当前活动窗口就变成这个新创建的子 Form 而不是事实上希望的那个 Form 了。这就使得 Modal Dialog 所创建的子 Form 变成了它的 Owner ,Owner 一旦被关闭,这个 Modal Dialog 自然也就被销毁了。
所以更为保险的调用方法是显式的指出该模式对话框的所有者: form.ShowDialog(this); 把调用窗口的引用作为参数传递,防止在模式对话框被构建之前有其他的窗体变成活动窗体。
This Entry was Last Modified on 2007-05-28 14:40
没有评论.
ac米兰 ajax apache api blog blogchina css dhtml download dreamhost dvd encoding error feeds firefox flash framework gmail google google_analytics google_talk http ide ie ie7 javascript jquery linux maxthon mod_rewrite movies msn mvc mysql oracle php pippo pivot prototype rss shell socket sohu spammers svn vs web web2 webclient weblogic windows xml zend 阿根廷 安全漏洞 奥运 备份 变形金刚 程序员 地铁 浮动层 搞笑 工具 冠军杯 管理 火箭 进程 客户端 篮球 厉 命令行 欧洲杯 人生 上海 设计模式 世界杯 数据库 搜索引擎 算法 图片 无极 系统优化 笑话 姚明 游戏 源代码 周杰伦 字符编码 足球 浏览器
