實例010 在窗體關閉之前加入確認對話框
實例說明
用戶對程序進行操作時,難免會有錯誤操作的情況,例如不小心關閉程序,如果尚有許多資料沒有保存,那么損失將非常嚴重,因此最好使程序具有靈活的交互性。人機交互過程一般都是通過對話框來實現的,對話框中有提示信息,并且提供按鈕讓用戶選擇,例如“是”或“否”。這樣用戶就能對所做的動作進行確認。正如前面所說的不小心關閉程序,如果在關閉程序之前提示用戶將要關閉程序,并且提示用戶選擇是否繼續下去,這樣可大大減少誤操作現象。本實例中的窗體在關閉時會顯示一個確認對話框,該對話框中有兩個按鈕“是”與“否”,代表是否同意關閉窗體的操作。實例運行結果如圖1.11所示。

圖1.11 在窗體關閉之前加入確認對話框
技術要點
窗體正要關閉但是沒有關閉時會觸發FormClosing事件,該事件中的參數FormClosing EventArgs e中包含Cancel屬性,如果設置該屬性為true,窗體將不會被關閉。因此在該事件處理代碼中可以提示用戶是否關閉窗體,如果用戶不想關閉窗體,則設置該屬性為true。利用MessageBox參數的返回值可以知道用戶所選擇的按鈕。下面詳細介紹一下相關屬性。
CancelEventArgs.Cancel屬性用來獲取或設置指示是否應取消事件的值。其語法如下:
public bool Cancel { get; set; }
如果應取消事件,屬性值為true,否則為false。
實現過程
01 新建一個項目,將其命名為QueryClose,默認窗體為Form1。
02 主要代碼。
01 private void Form1_FormClosing(object sender, FormClosingEventArgs e)
02 {
03 //當單擊"是"按鈕時
04 if(MessageBox.Show("將要關閉窗體,是否繼續?", "詢問", MessageBoxButtons.YesNo) ==
DialogResult.Yes)
05 {
06 e.Cancel = false; //不取消事件的值
07 }
08 else//當單擊"否"按鈕時
09 {
10 e.Cancel = true; //取消事件的值
11 }
12 }
舉一反三
根據本實例,讀者可以實現以下功能。
◇ 使窗體的關閉按鈕無效。
◇ 在系統托盤菜單中顯示關閉按鈕。
推薦閱讀
- Vue 3移動Web開發與性能調優實戰
- 手機安全和可信應用開發指南:TrustZone與OP-TEE技術詳解
- GAE編程指南
- Mastering JavaScript Object-Oriented Programming
- iOS 9 Game Development Essentials
- BeagleBone Media Center
- Python Deep Learning
- Mastering Python High Performance
- WebRTC技術詳解:從0到1構建多人視頻會議系統
- 輕松上手2D游戲開發:Unity入門
- 軟件工程基礎與實訓教程
- 大學計算機基礎實驗指導
- 從零開始學Selenium自動化測試:基于Python:視頻教學版
- 寫給青少年的人工智能(Python版·微課視頻版)
- MATLAB 2020 GUI程序設計從入門到精通