最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

winform攔截關(guān)閉按鈕觸發(fā)的事件示例

 更新時間:2014年01月21日 11:21:37   作者:  
這篇文章主要介紹了c# winform攔截關(guān)閉按鈕觸發(fā)的事件示例,大家參考使用吧

用戶關(guān)閉軟件時,軟件一般會給“是否確認關(guān)閉”的提示。通常,我們把它寫在FormClosing 事件中,如果確定關(guān)閉,就關(guān)閉;否則把FormClosingEventArgs 的 Cancel 屬性設(shè)置為 true,就取消了該窗體的關(guān)閉。

如果該窗體是主窗體,我們想在該窗體關(guān)閉時關(guān)閉整個應(yīng)用程序,會遇到至少兩種情況:

(1)該窗體同時是啟動窗體,即它是應(yīng)用程序中所有窗體的父類,則整個應(yīng)用程序會被關(guān)閉。

(2)如果該窗體不是啟動窗體,比如我們做了一個歡迎窗體,則應(yīng)用程序中所有窗體的父類就是這個歡迎窗體了。這時該窗體的關(guān)閉并不會關(guān)閉整個應(yīng)用程序。我們需要再加入“Application.Exit()”這行代碼來退出應(yīng)用程序。但同時又有問題了,父窗體的關(guān)閉又會給該窗體發(fā)送關(guān)閉事件,于是該事件又被調(diào)用一次,確認對話框又會彈出第二次。解決方法是用下面的代碼:

注:做歡迎體界面可以在主窗體中,ShowDialog方法打開歡迎界面,而不是把歡迎界面作為啟動窗體。下面的方法僅有理論意義。

復(fù)制代碼 代碼如下:

 protected override void WndProc(ref Message m)
{
    //Console.WriteLine(m.Msg);
    const int WM_SYSCOMMAND = 0x0112;
    const int SC_CLOSE = 0xF060;
    if (m.Msg == WM_SYSCOMMAND && (int)m.WParam == SC_CLOSE)
    {
        //捕捉關(guān)閉窗體消息
        //用戶點擊關(guān)閉窗體控制按鈕   注釋為最小化窗體  
        //this.WindowState = FormWindowState.Minimized;

        //窗體隱藏
        this.Hide();
        return;
    }
    base.WndProc(ref m);
}

C# 窗體關(guān)閉時可以觸發(fā)的事件

FormClosing :在窗體關(guān)閉時,F(xiàn)ormClosing 事件發(fā)生。窗體關(guān)閉時,此事件會得到處理,從而釋放與此窗體關(guān)聯(lián)的所有資源。如果取消此事件,則該窗體保持打開狀態(tài)。若要取消窗體的關(guān)閉操作,請將傳遞給事件處理程序的 FormClosingEventArgs 的 Cancel 屬性設(shè)置為 true。

FormClosed:在用戶或 Application 類的 Close 方法或 Exit 方法關(guān)閉窗體后,會發(fā)生 FormClosed 事件。若要防止窗體關(guān)閉,請?zhí)幚?FormClosing 事件,并將傳遞給事件處理程序的 CancelEventArgs 的 Cancel 屬性設(shè)置為 true??梢允褂么耸录?zhí)行一些任務(wù),如釋放窗體使用的資源,還可使用此事件保存輸入窗體中的信息或更新其父窗體。

當窗體顯示為模式對話框時,單擊“關(guān)閉”按鈕(窗體右上角帶 X 的按鈕)會隱藏窗體并將 DialogResult 屬性設(shè)置為 DialogResult.Cancel。通過在窗體的 FormClosing 事件的事件處理程序中設(shè)置 DialogResult 屬性,可以在用戶單擊“關(guān)閉”按鈕時重寫分配給 DialogResult 屬性的值。

注意

在顯示為無模式窗口的 Form 上調(diào)用 Close 方法時,不能調(diào)用 Show 方法使窗體可見,因為窗體的資源已被釋放。若要隱藏窗體然后又使其可見,請使用 Hide 方法。

如果窗體是多文檔界面 (MDI) 父窗體,則在引發(fā) MDI 父窗體的 FormClosing 事件之前將引發(fā)所有 MDI 子窗體的 FormClosing 事件。同樣,在引發(fā) MDI 父窗體的 FormClosed 事件之前,將引發(fā)所有 MDI 子窗體的 FormClosed 事件。取消 MDI 子窗體的 FormClosing 事件不能防止引發(fā) MDI 父窗體的 FormClosing 事件。但是,取消該事件會將作為參數(shù)傳遞給父窗體的 FormClosingEventArgs 類的 Cancel 屬性設(shè)置成 false。要強制關(guān)閉所有 MDI 父窗體和子窗體,請將 MDI 父窗體中的 Cancel 屬性設(shè)置成 false。

下面一個簡單例子:

復(fù)制代碼 代碼如下:

 private void Form2_FormClosing(object sender, FormClosingEventArgs e) 
 { 
     DialogResult result = MessageBox.Show("你確定要關(guān)閉嗎!", "提示信息", MessageBoxButtons.OKCancel, MessageBoxIcon.Information); 
     if (result == DialogResult.OK) 
     { 
e.Cancel = false;  //點擊OK
     } 
     else
     { 
e.Cancel = true; 
     } 
 }

相關(guān)文章

  • C#實現(xiàn)自定義FTP操作封裝類實例

    C#實現(xiàn)自定義FTP操作封裝類實例

    這篇文章主要介紹了C#實現(xiàn)自定義FTP操作封裝類,涉及C#操作FTP的連接、傳輸、下載等操作的實現(xiàn)技巧,非常具有實用價值,需要的朋友可以參考下
    2015-03-03
  • C#編譯器對局部變量的優(yōu)化指南

    C#編譯器對局部變量的優(yōu)化指南

    這篇文章主要給大家介紹了關(guān)于C#編譯器對局部變量的優(yōu)化指南,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • C#使用GDI+創(chuàng)建縮略圖實例

    C#使用GDI+創(chuàng)建縮略圖實例

    這篇文章主要介紹了C#使用GDI+創(chuàng)建縮略圖實例,是C#程序設(shè)計中非常實用的技巧,需要的朋友可以參考下
    2014-10-10
  • c#得到本月有幾周和這幾周的起止時間示例代碼

    c#得到本月有幾周和這幾周的起止時間示例代碼

    本篇文章主要是對c#得到本月有幾周和這幾周的起止時間的示例代碼進行了介紹,需要的朋友可以過來參考下,希望對大家有所幫助
    2014-01-01
  • 深入理解C#中的Delegate

    深入理解C#中的Delegate

    委托是一種安全地封裝方法的類型,它與 C 和 C++ 中的函數(shù)指針類似。與 C 中的函數(shù)指針不同,委托是面向?qū)ο蟮?、類型安全的和保險的。委托的類型由委托的名稱定義
    2016-07-07
  • C#4.0新特性之協(xié)變與逆變實例分析

    C#4.0新特性之協(xié)變與逆變實例分析

    這篇文章主要介紹了C#4.0新特性的協(xié)變與逆變,是比較實用的一個新功能,需要的朋友可以參考下
    2014-09-09
  • C#管道式編程的介紹與實現(xiàn)

    C#管道式編程的介紹與實現(xiàn)

    這篇文章主要給大家介紹了關(guān)于C#管道式編程的介紹與實現(xiàn)方法,文中通過示例代碼介紹的非常詳細,對大家學(xué)習(xí)或者使用C#具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • 如何實現(xiàn)定時推送的具體方案

    如何實現(xiàn)定時推送的具體方案

    在工作當中遇到了一個需要定時向客戶端推送新聞、文章等內(nèi)容。小項目又用不了大框架,這個時候在網(wǎng)上搜了很久沒有找到合適的解決方案,直到看到了一位大佬寫的文章提供了一個非常不錯的思路本篇文章也是受到他的啟發(fā)實現(xiàn)了之后這里分享給大家
    2021-04-04
  • Js中的substring,substr與C#中的Substring比較

    Js中的substring,substr與C#中的Substring比較

    本篇文章主要是對Js中的substring,substr與C#中的Substring進行了比較。需要的朋友可以過來參考下,希望對大家有所幫助
    2014-01-01
  • C#中動態(tài)顯示當前系統(tǒng)時間的實例方法

    C#中動態(tài)顯示當前系統(tǒng)時間的實例方法

    想在網(wǎng)頁中動態(tài)地顯示當前系統(tǒng)的時間,找了好多,不過都是一些停在那里不動的。。。不過皇天不負有心人,終于讓我找到了
    2013-05-05

最新評論

临武县| 卢氏县| 道真| 武宣县| 札达县| 怀化市| 绍兴县| 老河口市| 通江县| 永善县| 区。| 合肥市| 张家川| 衡阳市| 安平县| 淳化县| 洛阳市| 磴口县| 沂南县| 天镇县| 神农架林区| 社旗县| 邢台市| 双辽市| 林州市| 龙门县| 盐山县| 明溪县| 水富县| 黑水县| 剑阁县| 高尔夫| 镇沅| 开原市| 游戏| 板桥市| 射洪县| 若尔盖县| 盈江县| 锦州市| 巴彦淖尔市|