4 回答

TA貢獻1744條經驗 獲得超4個贊
1、QueryUnload發生在Unload之前
2、QueryUnload和Unload都可以阻止窗體卸載
3、QueryUnload可以檢測窗體的卸載方式(比如是點擊窗體右上角的X卸載,還是在軟件代碼中用Unload Me命令卸載),Unload則無此功能
4、當程序有多個窗體時,任何一個窗體卸載,則所有窗體的QueryUnload都會被觸發(換句話說就是即使不是本窗體關閉QueryUnload事件也會觸發的),而Unload事件則只發生在卸載的窗體中
5、如果用通俗的話來解析就是:QueryUnload是向所有窗體宣布“我要卸載了!誰有不同意見就說”,而Unload只是在自身內部通知要卸載。

TA貢獻1963條經驗 獲得超6個贊
當那個窗體被重新加載時,它的所有控件的內容均被重新初始化。當使用在 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 是在每個窗體卸載時發生。

TA貢獻1827條經驗 獲得超8個贊
意思是從內存中卸載窗體或控件。
在卸載窗體前,會發生 Query_Unload 事件過程,然后是 Form_Unload 事件過程。在其中任一過程中設置 cancel 參數為 True 可防止窗體被卸載。
若為 MDIForm 對象,先發生 MDIForm 對象的 Query_Unload 事件過程,接著是各 MDI 子窗體 的 Query_Unload 事件過程和 Form_Unload 事件過程,最后是 MDIForm 對象的 Form_Unload 事件過程。

TA貢獻1820條經驗 獲得超9個贊
KeyAscii = 27 就是當按Esc的時候Form_QueryUnload 就是窗體卸載時間QueryUnload 事件在一個窗體或應用程序關閉之前發生。此事件的典型用法是在關閉一個應用程序之前用來確保包含在該應用程序中的窗體中沒有未完成的任務。例如,如果還未保存某一窗體中的新數據,則應用程序會提示保存該數據。
Unload 事件是當窗體從屏幕上刪除時發生。將 cancel 設置為任何非零的值可防止窗體被刪除,但不能阻止其它事件,諸如從 Microsoft Windows 操作環境中退出等??捎?QueryUnload 事件阻止從 Windows 中的退出。
添加回答
舉報