禁用Alt + F4關閉表單的一些常用方法

來源:互聯網
上載者:User

  我在“多線程:C#.NET中使用BackgroundWorker在模態對話方塊中顯示進度條”一文中介紹了如何創造一個能即時顯示程式處理進度的對話方塊,為了讓該對話方塊看起來更加逼真,除了要將表單的的FormBorderStyle屬性設為FixedDialog,將MaximizeBox和MinimizeBox設為false,將ControlBox設為false外,還需要屏蔽Alt + F4按鍵組合以防止使用者關閉對話方塊。屏蔽Alt + F4的方法有很多,這裡列出了一個比較簡單而奏效的方法。

1. 捕獲表單的KeyDown事件

  給表單添加KeyDown事件,然後加入下面的代碼:

1 private void Form2_KeyDown(object sender, KeyEventArgs e)
2 {
3     if (e.KeyCode == Keys.F4 && e.Modifiers == Keys.Alt)
4     {
5         e.Handled = true;
6     }
7 }

  代碼中判斷目前使用者是否按下了Alt + F4按鍵組合,如果是則執行e.Handled = true用於指示事件已經被成功執行,從而屏蔽了系統的Alt + F4功能。

2. 改寫表單的Closing事件

  給表單添加Closing事件,然後加入下面的代碼:

1 public void Form2_FormClosing(object sender, FormClosingEventArgs e)
2 {
3     e.Cancel = true;
4 }

  當表單被關閉時(使用者點擊表單右上方的關閉按鈕或通過程式調用表單的Close()方法)關閉動作會被取消,那麼如何才能通過程式來關閉表單呢?可以在關閉表單的代碼前去掉表單的Closing事件,如:

1 this.FormClosing -= new System.Windows.Forms.FormClosingEventHandler(this.Form1_FormClosing);
2 this.Close();

  當然,你也可以選擇不關閉表單而只是隱藏它,這樣該表單不會在記憶體中被登出。上面兩行代碼只能在表單內部運行,如果你想實現在父表單中通過程式關閉子表單,可以在子表單中添加一個public類型的方法,將上面兩行代碼加入到方法中,然後在父表單中調用子表單的這個方法。如:

主表單:

1 Form2 frm = new Form2();
2 frm.CloseWindow();

子表單:

 1 private void Form2_FormClosing(object sender, FormClosingEventArgs e)
 2 {
 3     e.Cancel = true;
 4 }
 5 
 6 public void CloseWindow()
 7 {
 8     this.FormClosing -= new FormClosingEventHandler(this.Form2_FormClosing);
 9     this.Close();
10 }

3. 調用COM組建或全域鉤子

  這類方法需要藉助於第三方的代碼來實現,過程稍微複雜一些,不太推薦使用,可考慮在一些比較特殊的場合使用。這裡有兩個例子可供參考:

http://zhidao.baidu.com/question/54482219

http://www.cnblogs.com/hbz253638398/archive/2008/05/30/1210971.html

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.