官术网_书友最值得收藏!

bt2-L 實例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   }

舉一反三

根據本實例,讀者可以實現以下功能。

使窗體的關閉按鈕無效。

在系統托盤菜單中顯示關閉按鈕。

主站蜘蛛池模板: SHOW| 沁水县| 西和县| 武威市| 航空| 闽清县| 贺州市| 盈江县| 武定县| 盘山县| 崇仁县| 重庆市| 古浪县| 大方县| 和政县| 玛曲县| 壤塘县| 东兴市| 青岛市| 五大连池市| 青川县| 金阳县| 田东县| 秦安县| 龙州县| 凌云县| 武夷山市| 东海县| 乌苏市| 锦屏县| 舒兰市| 大理市| 双城市| 苍梧县| 准格尔旗| 长白| 萍乡市| 达孜县| 信阳市| 昌图县| 宝丰县|