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

c#之關(guān)閉窗體的實(shí)現(xiàn)方法

 更新時(shí)間:2023年07月12日 09:40:51   作者:張偉杰-Vijay  
這篇文章主要介紹了c#之關(guān)閉窗體的實(shí)現(xiàn)方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

c#關(guān)閉窗體的方法

關(guān)閉窗體的四種方法

1. close():

指僅關(guān)閉當(dāng)前窗體,如果不是主窗體(包含主線程的窗體,并非MDI窗體)的話,是無法退出整個(gè)程序的。如果有托管線程也無法退出。

此方法會(huì)調(diào)用 dispose() 方法,所以它會(huì)自動(dòng)的幫我們釋放內(nèi)存,除了以下兩種情況:

  • (1)該窗體是多文檔應(yīng)用程序(MDI)的一部分并且此窗體不可見;
  • (2)此窗體是“模態(tài)”窗體。

close() 方法執(zhí)行的時(shí)候會(huì)觸發(fā)兩個(gè)事件:Form_Closing 和 Form_Closeed 事件,F(xiàn)orm_Closing 是在窗體關(guān)閉時(shí)執(zhí)行,F(xiàn)orm_Closed 是在窗體關(guān)閉之后執(zhí)行,所以如果想取消關(guān)閉窗體,可以在 Form_Closing 事件里取消。

2. Application.Exit():

強(qiáng)制所有消息中止,退出所有的窗體,但是若有托管線程(非主線程),也無法干凈地退出。

3. Application.ExitThread():

強(qiáng)制中止調(diào)用線程上的所有消息,同樣面臨其它線程無法正確退出的問題。

4. System.Environment.Exit(0);

這是最徹底的退出方式,不管什么線程都被強(qiáng)制退出,把程序結(jié)束的很干凈。 參數(shù)0:代表程序正常退出;參數(shù)1:代表程序非正常退出。

close() 和 dispose() 的區(qū)別

  • close():這個(gè)方法會(huì)自動(dòng)調(diào)用 dispose()方法。
  • dispose():這個(gè)方法的作用是釋放組件使用的所有資源,.NET 提供的垃圾自動(dòng)回收機(jī)制,可以幫我們自動(dòng)回收垃圾對(duì)象,可是垃圾回收器只能回收“托管資源”,而不能回收“非托管資源”,而且垃圾回收器也并不是立即回收,而是每隔一段時(shí)間才會(huì)回收一次,每次回收的時(shí)間我們都不知道。

所以 dispose() 方法是為了彌補(bǔ)這種機(jī)制所產(chǎn)生的方法,調(diào)用 dispose(true) 方法可以釋放“托管”和“非托管”資源,而且它可以不必等待垃圾回收器來自動(dòng)釋放,調(diào)用此方法可以顯示釋放資源。

Form.show() 和 Form.ShowDialog() 的區(qū)別

  • From.Show():窗體顯示出來的是非模態(tài)窗體
  • From.ShowDialog():窗體顯示出來的是模態(tài)窗體,而且點(diǎn)擊窗體右上角的關(guān)閉按鈕時(shí),它不是調(diào)用 close() 方法,而是調(diào)用 hide() 方法。所以它并不是真正的關(guān)閉,再調(diào)用此方法窗體還會(huì)出現(xiàn)。而非模態(tài)窗體,點(diǎn)擊關(guān)閉的時(shí)候,會(huì)調(diào)用 close() 方法,再次調(diào)用 Show() 方法,就會(huì)報(bào)錯(cuò),因?yàn)榇绑w對(duì)象已被釋放。

托管資源 和 非托管資源

  • 托管資源:由CLR管理分配和釋放的資源,即由CLR里new出來的對(duì)象
  • 非托管資源:不受CLR管理的對(duì)象,windows內(nèi)核對(duì)象,如文件、數(shù)據(jù)庫連接、套接字、COM對(duì)象等

如果某類型使用到了非托管資源,那么,就需要讓此類型繼承接口IDisposable。需要顯示釋放資源,因?yàn)槔厥掌鞑⒉粫?huì)回收非托管資源。

c#彈窗提示并自動(dòng)關(guān)閉方法

剛學(xué)C#不久,就寫個(gè)工具,總結(jié)寫一個(gè)簡便自定義提示窗口方法,并自動(dòng)關(guān)閉。

1.在項(xiàng)目添加windows form(非user control),命名為Form_wait。

2.在Form_wait,加入需要控件與一個(gè)定時(shí)器timer1。

數(shù)字10為計(jì)時(shí)顯示,10秒后自動(dòng)默認(rèn)選擇“是”

timer1 屬性interval 設(shè)為1000,即 tick事件1s進(jìn)入

3.定義Form_wait響應(yīng)事件:

  	private void timer1_Tick(object sender, EventArgs e)  //1s進(jìn)入一次
        {
            count -= 1;
            this.label2.Text = count.ToString();
            if(count==0)
            {
                this.timer1.Stop();
                this.DialogResult = DialogResult.OK;	//這里是重點(diǎn),在主窗口里能讀取返回值	
            }
        }
        private void button1_Click(object sender, EventArgs e) //“是”
        {
            this.timer1.Stop();
            this.DialogResult = DialogResult.OK;
        }
        private void button2_Click(object sender, EventArgs e)
        {
            this.timer1.Stop();
            this.DialogResult = DialogResult.No;
        }

4.主窗口調(diào)用。

                        Form_wait subform = new Form_wait(15);  //15為設(shè)定倒時(shí)
                        if (subform.ShowDialog() == DialogResult.No)
                        {
                            MessageBox.Show("跳出控件");
                            return;
                        }

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 在C#中用表格替換Word文檔中文本的詳細(xì)步驟

    在C#中用表格替換Word文檔中文本的詳細(xì)步驟

    在日常的文檔處理工作中,我們經(jīng)常會(huì)遇到這樣的場景:需要將 Word 文檔中的特定文本內(nèi)容,替換為結(jié)構(gòu)化的實(shí)際數(shù)據(jù)表格,使用Spire.Doc for .NET庫,我們可以通過精準(zhǔn)定位文本并利用其強(qiáng)大的替換功能,下面小編為大家詳細(xì)說說,需要的朋友可以參考下
    2025-09-09
  • C#使用Stack<T>進(jìn)行堆棧設(shè)計(jì)的實(shí)現(xiàn)

    C#使用Stack<T>進(jìn)行堆棧設(shè)計(jì)的實(shí)現(xiàn)

    堆棧代表了一個(gè)后進(jìn)先出的對(duì)象集合,當(dāng)您需要對(duì)各項(xiàng)進(jìn)行后進(jìn)先出的訪問時(shí),則使用堆棧,本文主要介紹了C#使用Stack<T>類進(jìn)行堆棧設(shè)計(jì)的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),感興趣的可以了解一下
    2024-03-03
  • C#實(shí)現(xiàn)可捕獲幾乎所有鍵盤鼠標(biāo)事件的鉤子類完整實(shí)例

    C#實(shí)現(xiàn)可捕獲幾乎所有鍵盤鼠標(biāo)事件的鉤子類完整實(shí)例

    這篇文章主要介紹了C#實(shí)現(xiàn)可捕獲幾乎所有鍵盤鼠標(biāo)事件的鉤子類,以完整實(shí)例形式分析了C#捕獲鍵盤鼠標(biāo)事件的鉤子操作技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2016-06-06
  • Unity UI組件ScrollRect實(shí)現(xiàn)無限滾動(dòng)條

    Unity UI組件ScrollRect實(shí)現(xiàn)無限滾動(dòng)條

    這篇文章主要為大家詳細(xì)介紹了Unity UI組件ScrollRect實(shí)現(xiàn)無限滾動(dòng)條,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-07-07
  • C#中的多線程多參數(shù)傳遞詳解

    C#中的多線程多參數(shù)傳遞詳解

    第一種解決方案的原理是:將線程執(zhí)行的方法和參數(shù)都封裝到一個(gè)類里面。通過實(shí)例化該類,方法就可以調(diào)用屬性來實(shí)現(xiàn)間接的類型安全地傳遞多個(gè)參數(shù)
    2014-01-01
  • C#實(shí)現(xiàn)JWT無狀態(tài)驗(yàn)證的實(shí)戰(zhàn)應(yīng)用解析

    C#實(shí)現(xiàn)JWT無狀態(tài)驗(yàn)證的實(shí)戰(zhàn)應(yīng)用解析

    這篇文章主要介紹了C#實(shí)現(xiàn)JWT無狀態(tài)驗(yàn)證的實(shí)戰(zhàn)應(yīng)用解析,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-03-03
  • c#文本加密程序代碼示例

    c#文本加密程序代碼示例

    這是一個(gè)加密軟件,但只限于文本加密,加了窗口控件的滑動(dòng)效果,詳細(xì)看下面的代碼
    2013-11-11
  • unity通過Mesh網(wǎng)格繪制圖形球體

    unity通過Mesh網(wǎng)格繪制圖形球體

    這篇文章主要為大家詳細(xì)介紹了unity通過Mesh網(wǎng)格繪制圖形球體,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • C# JavaScriptSerializer序列化時(shí)的時(shí)間處理詳解

    C# JavaScriptSerializer序列化時(shí)的時(shí)間處理詳解

    這篇文章主要為大家詳細(xì)介紹了C# JavaScriptSerializer序列化時(shí)的時(shí)間處理詳解,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-08-08
  • C#調(diào)用FFmpeg提取視頻中音頻流的三種方式

    C#調(diào)用FFmpeg提取視頻中音頻流的三種方式

    這篇文章主要介紹了C#通過三種方式調(diào)用FFmpeg(命令行/NuGet/GUI),不僅能提取音頻,還能批量處理、格式轉(zhuǎn)換、錯(cuò)誤處理,只要掌握這些技巧,再復(fù)雜的音視頻文件也逃不過你的“五指山”,需要的朋友可以參考下
    2025-06-06

最新評(píng)論

翁源县| 宜兴市| 徐州市| 龙海市| 固安县| 万载县| 阿坝| 津南区| 通山县| 河曲县| 拉孜县| 贵阳市| 湾仔区| 舟山市| 汝城县| 广河县| 建湖县| 获嘉县| 黄平县| 环江| 康平县| 义马市| 宣恩县| 东光县| 文昌市| 安龙县| 伽师县| 青州市| 许昌县| 汶上县| 连江县| 南通市| 武义县| 盐城市| 涞源县| 家居| 汉沽区| 青海省| 临洮县| 巴南区| 汶上县|