C Winform 攔截關閉按鈕觸發的事件

2021-09-06 13:33:55 字數 1348 閱讀 6339

使用者關閉軟體時,軟體一般會給「是否確認關閉」的提示。

通常,我們把它寫在formclosing 事件中,如果確定關閉,就關閉;否則把formclosingeventargs 的 cancel 屬性設定為 true,就取消了該窗體的關閉。

如果該窗體是主窗體,我們想在該窗體關閉時關閉整個應用程式,會遇到至少兩種情況:

(1)該窗體同時是啟動窗體,即它是應用程式中所有窗體的父類,則整個應用程式會被關閉。

1

protected

override

void wndproc(ref

message m)216

base.wndproc(ref

m);17 }

c# 窗體關閉時可以觸發的事件

formclosing :在窗體關閉時,formclosing 事件發生。窗體關閉時,此事件會得到處理,從而釋放與此窗體關聯的所有資源。如果取消此事件,則該窗體保持開啟狀態。若要取消窗體的關閉操作,請將傳遞給事件處理程式的 formclosingeventargs 的 cancel 屬性設定為 true。

當窗體顯示為模式對話方塊時,單擊「關閉」按鈕(窗體右上角帶 x 的按鈕)會隱藏窗體並將 dialogresult 屬性設定為 dialogresult.cancel。通過在窗體的 formclosing 事件的事件處理程式中設定 dialogresult 屬性,可以在使用者單擊「關閉」按鈕時重寫分配給 dialogresult 屬性的值。

注意在顯示為無模式視窗的 form 上呼叫 close 方法時,不能呼叫 show 方法使窗體可見,因為窗體的資源已被釋放。若要隱藏窗體然後又使其可見,請使用 hide 方法。

如果窗體是多文件介面 (mdi) 父窗體,則在引發 mdi 父窗體的 formclosing 事件之前將引發所有 mdi 子窗體的 formclosing 事件。同樣,在引發 mdi 父窗體的 formclosed 事件之前,將引發所有 mdi 子窗體的 formclosed 事件。取消 mdi 子窗體的 formclosing 事件不能防止引發 mdi 父窗體的 formclosing 事件。但是,取消該事件會將作為引數傳遞給父窗體的 formclosingeventargs 類的 cancel 屬性設定成 false。要強制關閉所有 mdi 父窗體和子窗體,請將 mdi 父窗體中的 cancel 屬性設定成 false。

下面乙個簡單例子:

1

private

void form2_formclosing(object

sender, formclosingeventargs e) 2

8else9

12 }

推薦乙個c#操作sql server資料庫的例項:

C WinForm開發 取消窗體關閉按鈕(整理)

這兩天要弄個東西,然後不想要winform自帶的關閉窗體的按鈕,想用自己定義的乙個窗體按鈕。又不希望通過更改form.formborderstyle屬性的方法來實現,還想留著那個窗體欄可以對窗體進行移動等。其實禁用最小化 最大化按鈕的直接可以在winform的屬性面板中設定了,而這個禁用關閉按鈕的就...

C winform中視窗關閉按鈕隱藏與禁用

首先說一句 不存任何一種方式可以單獨隱藏關閉按鈕,隱藏的話會把所有最大化,最小化,幫助,關閉按鈕都給隱藏掉。第一 種 禁用視窗上部的關閉按鈕 方法一 在form1的視窗程式中desigener設計器中重寫如下方法 將此部分貼上到視窗程式中去就可以了 方法二 就是在視窗的formclosing事件中加...

C (winform)瀏覽按鈕

folderbrowserdialog folderbrowser new folderbrowserdialog f web 設定開啟目錄選擇對話方塊時預設的目錄 folderbrowser.shownewfolderbutton false 是否顯示新建資料夾按鈕 folderbrowser.d...