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

win7中C#的winForm編程使用savefiledialog不能彈出保存窗體的解決方法

 更新時(shí)間:2014年12月30日 09:12:29   投稿:shichen2014  
這篇文章主要介紹了win7中C#的winForm編程使用savefiledialog不能彈出保存窗體的解決方法,涉及針對(duì)線程的調(diào)用問(wèn)題,是比較實(shí)用的技巧,需要的朋友可以參考下

本文實(shí)例分析了win7中C#的winForm編程使用savefiledialog不能彈出保存窗體的解決方法。分享給大家供大家參考。具體分析如下:

復(fù)制代碼 代碼如下:
public void ResMsg()
{
    while (isRecMsg)
    {
 //準(zhǔn)備一個(gè)數(shù)組 準(zhǔn)備接收 服務(wù)端發(fā)來(lái)的數(shù)據(jù)
 byte[] msgRec = new byte[1024 * 1024 * 2];
 //接收服務(wù)端發(fā)來(lái)的數(shù)據(jù),此方法也會(huì)阻斷當(dāng)前線程,并返回接收的數(shù)據(jù)的長(zhǎng)度
 int recLength = sokClient.Receive(msgRec);
 switch(msgRec[0])
 {
     case 1://接收到 文件
  DialogResult reuslt = new SaveFileDialog().ShowDialog();   --- 此處有問(wèn)題
  if (reuslt == System.Windows.Forms.DialogResult.OK)
  {
      using (FileStream fs = new FileStream(saveFileDialog1.FileName, FileMode.Create))
      {
   fs.Write(msgRec, 1, recLength - 1);
      }
      ShowMsg("文件保存完畢!" + saveFileDialog1.FileName);
  }
  break;
     case 2://接收到 字符串消息
  {
      //將數(shù)據(jù)轉(zhuǎn)成字符串(要轉(zhuǎn)換的數(shù)組,開(kāi)始轉(zhuǎn)換的下標(biāo),要轉(zhuǎn)換的數(shù)據(jù)長(zhǎng)度)
      string strRec = System.Text.Encoding.Default.GetString(msgRec, 1, recLength-1);
      //將接收到的數(shù)據(jù)顯示在文本框中
      ShowMsg(strRec);
      break;
  }
     case 3://接收到 閃屏命令
  {
      ShakeWindow();
      break;
  }
 }
    }
}

客戶端和服務(wù)器傳輸文件時(shí), 服務(wù)器端都顯示發(fā)送成功了,但是到客戶端保存時(shí),savefiledialog 保存對(duì)話框就是彈不來(lái)?!!

仔細(xì)的檢查代碼好幾遍,邏輯上沒(méi)有錯(cuò)誤。就是彈不出來(lái),很無(wú)語(yǔ)了。就上網(wǎng)查了,查了很多資料,沒(méi)有什么頭緒。在查的過(guò)程中,我看見(jiàn)這樣的一句話“你前面都說(shuō)了,你使用線程調(diào)用,那么這個(gè)線程是否為主線程?如果不是主線程,那么你應(yīng)該把它交給主線程去處理”,然后我就用一個(gè)例子模擬了一下,確實(shí)有關(guān)系。

模擬的例子:

復(fù)制代碼 代碼如下:
public partial class Form1 : Form
{
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            Thread t = new Thread(saveDialog);
            t.IsBackground = true;
            //t.ApartmentState = ApartmentState.STA;//缺少這句話,就會(huì)出錯(cuò)誤。

    //不過(guò)以上這句在Vs 2010中顯示是被微軟否決的,過(guò)時(shí)的,雖然還能用。但是為了更好的兼容版本,微軟推出以下方法:

    t.SetApartmentState(ApartmentState.STA);  //即是在線程啟動(dòng)時(shí)設(shè)置它的單元狀態(tài),這里設(shè)置它的狀態(tài)為單線程單元


            t.Start();
        }

        public void saveDialog()
        {
            SaveFileDialog result = new SaveFileDialog();
            result.ShowDialog();
        }
}

模擬的例子:缺少這句話【t.ApartmentState = ApartmentState.STA】,就會(huì)出錯(cuò)誤。但在vs2010中設(shè)置方式變?yōu)閠.SetApartmentState(ApartmentState.STA);//即是在線程啟動(dòng)時(shí)設(shè)置它的單元狀態(tài),這里設(shè)置它的狀態(tài)為單線程單元

同理  savefiledialog 保存對(duì)話框就是彈不來(lái)???是不是也是這個(gè)問(wèn)題啊?經(jīng)過(guò)嘗試后,還真是這的問(wèn)題。

就這么簡(jiǎn)簡(jiǎn)單單的一句話,就花費(fèi)了我兩個(gè)多小時(shí),但最后解決了,也很高興,并且在找的過(guò)程中收獲了不少。這就是有失必有得吧!

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

相關(guān)文章

  • c# SqlDataAdapter中的Fill是怎么實(shí)現(xiàn)的

    c# SqlDataAdapter中的Fill是怎么實(shí)現(xiàn)的

    這篇文章主要介紹了c# SqlDataAdapter中的Fill是怎么實(shí)現(xiàn)的,文中講解非常細(xì)致,代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-07-07
  • C#省份城市下拉框聯(lián)動(dòng)簡(jiǎn)單實(shí)現(xiàn)方法

    C#省份城市下拉框聯(lián)動(dòng)簡(jiǎn)單實(shí)現(xiàn)方法

    這篇文章主要介紹了C#省份城市下拉框聯(lián)動(dòng)簡(jiǎn)單實(shí)現(xiàn)方法,涉及字典的定義與索引的用法,是非常實(shí)用的技巧,需要的朋友可以參考下
    2014-12-12
  • 一文帶你了解C#操作MySql的方法

    一文帶你了解C#操作MySql的方法

    工作中大多數(shù)情況下用的都是 MySql 但一直沒(méi)有記錄,相關(guān)操作。這篇文章以便 MySql.Data 庫(kù)進(jìn)行MySql操作,使用 C# 執(zhí)行 SQL 語(yǔ)句,造個(gè)輪子
    2023-03-03
  • C#七大經(jīng)典排序算法系列(上)

    C#七大經(jīng)典排序算法系列(上)

    這篇文章主要為大家詳細(xì)介紹了C#七大經(jīng)典排序算法系列上篇,冒泡排序,快速排序等,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-04-04
  • C# WinForm調(diào)用net core實(shí)現(xiàn)文件上傳接口

    C# WinForm調(diào)用net core實(shí)現(xiàn)文件上傳接口

    這篇文章主要為大家詳細(xì)介紹了C# WinForm如何調(diào)用net core實(shí)現(xiàn)文件上傳接口,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-04-04
  • C#使用GDI繪制矩形的方法

    C#使用GDI繪制矩形的方法

    這篇文章主要介紹了C#使用GDI繪制矩形的方法,涉及C#使用GDI繪圖的相關(guān)技巧,需要的朋友可以參考下
    2015-04-04
  • C#中的delegate委托類型基本學(xué)習(xí)教程

    C#中的delegate委托類型基本學(xué)習(xí)教程

    這篇文章主要介紹了C#中的delegate委托類型基本學(xué)習(xí)教程,委托是C#語(yǔ)言所具有的一個(gè)重要特性,需要的朋友可以參考下
    2016-01-01
  • WPF基礎(chǔ)教程之元素綁定詳解

    WPF基礎(chǔ)教程之元素綁定詳解

    這篇文章主要給大家介紹了關(guān)于WPF基礎(chǔ)教程之元素綁定的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-01-01
  • C#調(diào)用WebService的方法步驟

    C#調(diào)用WebService的方法步驟

    在日常工作中,如果涉及到與第三方進(jìn)行接口對(duì)接,有的會(huì)使用WebService的方式,這篇文章主要講解在.NET?Framework中如何調(diào)用WebService,感興趣的小伙伴跟著小編一起來(lái)看看吧
    2025-03-03
  • C# Double轉(zhuǎn)化為String時(shí)的保留位數(shù)及格式方式

    C# Double轉(zhuǎn)化為String時(shí)的保留位數(shù)及格式方式

    這篇文章主要介紹了C# Double轉(zhuǎn)化為String時(shí)的保留位數(shù)及格式方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-02-02

最新評(píng)論

桐乡市| 德化县| 元氏县| 留坝县| 娄底市| 项城市| 颍上县| 珲春市| 兴国县| 旌德县| 石楼县| 洪雅县| 柳州市| 湖州市| 江达县| 娱乐| 抚顺市| 文山县| 霍州市| 民乐县| 会昌县| 兴义市| 出国| 五莲县| 卓尼县| 鱼台县| 盈江县| 天峻县| 德令哈市| 上杭县| 拜城县| 昭通市| 攀枝花市| 宁陕县| 深泽县| 维西| 滦南县| 威宁| 台东市| 喜德县| 闽侯县|