VB中的Unload事件与QueryUnload事件有什么不同?

QueryUnload事件是在任一个卸载之前在所有窗体中发生,而Unload是在每个窗体卸载时发生。这句话是什么意思啊,请高手指教。... QueryUnload 事件是在任一个卸载之前在所有窗体中发生,而 Unload 是在每个窗体卸载时发生。这句话是什么意思啊,请高手指教。 展开
 我来答
网海1书生
科技发烧友

推荐于2017-11-26 · 擅长软件设计、WEB应用开发、小程序
网海1书生
采纳数:12310 获赞数:26224

向TA提问 私信TA
展开全部
1、QueryUnload发生在Unload之前
2、QueryUnload和Unload都可以阻止窗体卸载
3、QueryUnload可以检测窗体的卸载方式(比如是点击窗体右上角的X卸载,还是在软件代码中用Unload Me命令卸载),Unload则无此功能
4、当程序有多个窗体时,任何一个窗体卸载,则所有窗体的QueryUnload都会被触发(换句话说就是即使不是本窗体关闭QueryUnload事件也会触发的),而Unload事件则只发生在卸载的窗体中
5、如果用通俗的话来解析就是:QueryUnload是向所有窗体宣布“我要卸载了!谁有不同意见就说”,而Unload只是在自身内部通知要卸载。
追问
请问一下“任何一个窗体卸载,则所有窗体的QueryUnload都会被触发”是不是仅仅发生在MDI窗体中呢?因为我用同一个工程中的两个普通窗体来验证,发现并不符合。当然,因为刚开始学,我也不太清楚是不是我验证的方法不对~~
追答
这个当然是的,因为只有在MDI架构中,窗体之间才是互有关系的(即主窗体是父亲,所有子窗体都是兄弟姐妹),这样的话QueryUnload的触发才有实际意义(比如某个子窗体卸载可能会影响其他的兄弟窗体,所以有必要在卸载前通知一下)。而普通窗体之间就像是路人甲、路人乙,互相之间是没有强制性的关系的,一般情况下路人甲自杀是不会影响到路人乙的。
百度网友b472e787f3d
2014-04-03 · TA获得超过273个赞
知道小有建树答主
回答量:242
采纳率:0%
帮助的人:308万
展开全部
当那个窗体被重新加载时,它的所有控件的内容均被重新初始化。当使用在 Control 菜单中的 Close 命令或 Unload 语句关闭该窗体时,此事件被触发。
将 cancel 设置为任何非零的值可防止窗体被删除,但不能阻止其它事件,诸如从 Microsoft Windows 操作环境中退出等。可用 QueryUnload 事件阻止从 Windows 中的退出。

在窗体被卸载时,可用一个 Unload 事件过程来确认窗体是否应被卸载或用来指定想要发生的操作。也可在其中包括任何在关闭该窗体时也许需要的验证代码或将其中的数据储存到一个文件中。

QueryUnload 事件在 Unload 事件之前发生。Unload 事件在 Terminate 事件之前发生
当一个 MDIForm 对象关闭时,QueryUnload 事件先在 MDI 窗体发生,然后在所有 MDI 子窗体中发生。如果没有窗体取消 QueryUnload 事件,该 Unload 事件首先发生在所有其它窗体中,然后再发生在 MDI 窗体中。当一个子窗体或一个 Form 对象关闭时,在那个窗体中的 QueryUnload 事件先于该窗体的 Unload 事件发生。
当一个应用程序关闭时,可使用 QueryUnload 或 Unload 事件过程将 Cancel 属性设置为 True 来阻止关闭过程。但是,QueryUnload 事件是在任一个卸载之前在所有窗体中发生,而 Unload 是在每个窗体卸载时发生。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式