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

C#中登錄窗體和歡迎窗體關(guān)閉方法分析

 更新時間:2014年12月15日 15:39:49   投稿:shichen2014  
這篇文章主要介紹了C#中登錄窗體和歡迎窗體關(guān)閉方法,實(shí)例分析了C#中登錄窗體和歡迎窗體關(guān)閉時出現(xiàn)錯誤的原因與解決方法,是C#項(xiàng)目開發(fā)中非常實(shí)用的技巧,需要的朋友可以參考下

本文實(shí)例分析了C#中登錄窗體和歡迎窗體關(guān)閉方法。分享給大家供大家參考。具體分析如下:

在c#的winform編程中,我們經(jīng)常會做登錄窗體或歡迎窗體,并把他們作為啟動窗體。
 
但是,我們有可能會遇到一些問題。
 
請看下面的代碼:

復(fù)制代碼 代碼如下:
private void button1_Click(object sender, EventArgs e)
{
    this.Close();
    new Form2().Show();
}

這段代碼想讓form1中的button1在點(diǎn)擊后關(guān)閉form1,show出form2,但是目的沒有達(dá)到,form2是show出來了,但僅僅是一閃,便和關(guān)閉的form1一同消失了。
 
這是怎么回事呢?讓我們從,Main方法里找答案。這是自動生成的Main方法:
復(fù)制代碼 代碼如下:
static void Main()
{
    Application.EnableVisualStyles();//啟用可視樣式
    Application.SetCompatibleTextRenderingDefault(false);//將某些控件的UseCompatibleTextRendering設(shè)為默認(rèn)值
    Application.Run(new Form1());//這是關(guān)鍵
}

我們看到這一句
復(fù)制代碼 代碼如下:
Application.Run(new Form1());

這是什么意思呢?這是要在沒有窗體的情況下,在當(dāng)前線程上開始運(yùn)行標(biāo)準(zhǔn)應(yīng)用程序消息循環(huán),并顯示這個窗體。
 
也就是說,要在一個沒有窗體的線程上顯示一個窗體,使這個線程不結(jié)束。
 
回過來,在button1的點(diǎn)擊事件中,我們show出來的form2又是什么情況呢?這個form2是存活在一個新的線程上的,所以這兩個窗體才不會相互阻塞。
 
那么問題來了,為什么把form1關(guān)掉,form2也會關(guān)掉呢?
 
原因是,form2所在的線程,是show它的線程的附屬線程,在這里就是說,form2的線程屬于form1的線程。在form1關(guān)閉的時候,form1所在的線程也就結(jié)束,連帶著,就把他的所有附屬線程也都結(jié)束掉了,form2所在的線程自然也不例外,所以form2也會隨之關(guān)閉。
 
知道了原因,那么我們就來思考解決的方案。Application.Run();好像很牛的樣子,我們來試試它行不行。
 
改變后的button1代碼如下:
復(fù)制代碼 代碼如下:
private void button1_Click(object sender, EventArgs e)
{
    this.Close();
    Application.Run(new Form2());
}

可是運(yùn)行結(jié)果是報錯

這是怎么回事呢?這是因?yàn)樵趂orm1所在的線程上已經(jīng)運(yùn)行著一個form了,運(yùn)行著標(biāo)準(zhǔn)應(yīng)用程序消息循環(huán),所以就不能在這個線程上再開啟一個新循環(huán),顯示一個新form了。
 
既然這個線程不能再來個form了,那我們就換個線程試試!最終的button1的點(diǎn)擊事件代碼如下

復(fù)制代碼 代碼如下:
private void button1_Click(object sender, EventArgs e)
{
    this.Close();

    new System.Threading.Thread(() =>
    {
 Application.Run(new Form2());

    }).Start();
}

希望本文所述對大家的C#程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • C#使用MiniExcel實(shí)現(xiàn)導(dǎo)入導(dǎo)出數(shù)據(jù)到Excel/CSV文件

    C#使用MiniExcel實(shí)現(xiàn)導(dǎo)入導(dǎo)出數(shù)據(jù)到Excel/CSV文件

    MiniExcel是一個簡單、高效避免OOM的.NET處理Excel查、寫、填充數(shù)據(jù)的工具,這篇文章主要介紹了C#如何使用MiniExcel實(shí)現(xiàn)導(dǎo)入導(dǎo)出數(shù)據(jù)到Excel/CSV文件,需要的可以參考下
    2024-02-02
  • c#分頁讀取GB文本文件實(shí)例

    c#分頁讀取GB文本文件實(shí)例

    這篇文章主要介紹了c#分頁讀取GB文本文件的方法,對于C#實(shí)現(xiàn)對大數(shù)據(jù)量的讀取非常具有實(shí)用價值,需要的朋友可以參考下
    2014-11-11
  • PropertyGrid自定義控件使用詳解

    PropertyGrid自定義控件使用詳解

    這篇文章主要為大家詳細(xì)介紹了PropertyGrid自定義控件的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • C#結(jié)合JavaScript實(shí)現(xiàn)多文件上傳功能

    C#結(jié)合JavaScript實(shí)現(xiàn)多文件上傳功能

    在許多應(yīng)用場景里,多文件上傳是一項(xiàng)比較實(shí)用的功能,本文主要為大家詳細(xì)介紹了C#如何結(jié)合JavaScript實(shí)現(xiàn)多文件上傳功能,感興趣的小伙伴可以了解下
    2023-12-12
  • C#基于Linq和反射實(shí)現(xiàn)數(shù)據(jù)持久化框架Xml4DB詳解

    C#基于Linq和反射實(shí)現(xiàn)數(shù)據(jù)持久化框架Xml4DB詳解

    在本篇文章里小編給大家整理的是關(guān)于C#基于Linq和反射實(shí)現(xiàn)數(shù)據(jù)持久化框架Xml4DB相關(guān)知識點(diǎn),有需要的朋友們學(xué)習(xí)下。
    2019-08-08
  • 一篇文章帶你輕松了解C# Lock關(guān)鍵字

    一篇文章帶你輕松了解C# Lock關(guān)鍵字

    這篇文章主要給大家介紹了如何通過一篇文章帶你輕松了解C# Lock關(guān)鍵字的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用C#具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-06-06
  • C#中按字符串截取長字符串實(shí)例

    C#中按字符串截取長字符串實(shí)例

    這篇文章主要介紹了C#中按字符串截取長字符串的實(shí)現(xiàn)方法,以實(shí)例形式展示了C#中正則匹配截取字符串的技巧,需要的朋友可以參考下
    2014-11-11
  • 通過C#實(shí)現(xiàn)裁剪PDF頁面功能

    通過C#實(shí)現(xiàn)裁剪PDF頁面功能

    在處理PDF文檔時,有時需要精確地裁剪頁面以適應(yīng)特定需求,比如去除廣告、背景信息或者僅僅是為了簡化文檔內(nèi)容,本文將指導(dǎo)如何使用免費(fèi).NET控件通過C#實(shí)現(xiàn)裁剪PDF頁面,需要的朋友可以參考下
    2024-09-09
  • C# 類的聲明詳解

    C# 類的聲明詳解

    本文主要對C# 類的聲明進(jìn)行詳細(xì)介紹。具有一定的參考價值,下面跟著小編一起來看下吧
    2017-01-01
  • 詳解C++中類的大小決定因數(shù)

    詳解C++中類的大小決定因數(shù)

    類的大小受多個因素影響,主要包括成員變量、對齊方式、繼承關(guān)系、虛函數(shù)表等,下面就來介紹一下,具有一定的參考價值,感興趣的可以了解一下
    2025-04-04

最新評論

司法| 辽宁省| 张家界市| 保德县| 清水河县| 武功县| 湖州市| 资溪县| 特克斯县| 南漳县| 贡嘎县| 凤城市| 灵川县| 新绛县| 资溪县| 依安县| 都昌县| 英德市| 武胜县| 定西市| 西丰县| 瓦房店市| 泊头市| 上虞市| 和田县| 昌平区| 灵川县| 庆安县| 舒兰市| 汉沽区| 伊春市| 襄垣县| 芒康县| 衡阳市| 颍上县| 石台县| 外汇| 曲松县| 抚远县| 定日县| 东港市|