欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

復制代碼 代碼如下:
public void ResMsg()
{
    while (isRecMsg)
    {
 //準備一個數(shù)組 準備接收 服務端發(fā)來的數(shù)據(jù)
 byte[] msgRec = new byte[1024 * 1024 * 2];
 //接收服務端發(fā)來的數(shù)據(jù),此方法也會阻斷當前線程,并返回接收的數(shù)據(jù)的長度
 int recLength = sokClient.Receive(msgRec);
 switch(msgRec[0])
 {
     case 1://接收到 文件
  DialogResult reuslt = new SaveFileDialog().ShowDialog();   --- 此處有問題
  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ù)組,開始轉(zhuǎn)換的下標,要轉(zhuǎn)換的數(shù)據(jù)長度)
      string strRec = System.Text.Encoding.Default.GetString(msgRec, 1, recLength-1);
      //將接收到的數(shù)據(jù)顯示在文本框中
      ShowMsg(strRec);
      break;
  }
     case 3://接收到 閃屏命令
  {
      ShakeWindow();
      break;
  }
 }
    }
}

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

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

模擬的例子:

復制代碼 代碼如下:
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;//缺少這句話,就會出錯誤。

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

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


            t.Start();
        }

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

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

同理  savefiledialog 保存對話框就是彈不來???是不是也是這個問題???經(jīng)過嘗試后,還真是這的問題。

就這么簡簡單單的一句話,就花費了我兩個多小時,但最后解決了,也很高興,并且在找的過程中收獲了不少。這就是有失必有得吧!

希望本文所述對大家的C#程序設計有所幫助。

相關文章

  • C#對Windows服務組的啟動與停止操作

    C#對Windows服務組的啟動與停止操作

    這篇文章主要為大家詳細介紹了C#對Windows服務組的啟動與停止操作,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-03-03
  • C#控制臺進行文件讀寫的方法

    C#控制臺進行文件讀寫的方法

    這篇文章主要介紹了C#控制臺進行文件讀寫的方法,涉及C#操作文件讀寫的相關技巧,非常具有實用價值,需要的朋友可以參考下
    2015-04-04
  • 關于C#版Nebula客戶端編譯的問題

    關于C#版Nebula客戶端編譯的問題

    這篇文章主要介紹了C#版Nebula客戶端編譯的問題,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-07-07
  • C#接口實現(xiàn)方法實例分析

    C#接口實現(xiàn)方法實例分析

    這篇文章主要介紹了C#接口實現(xiàn)方法,以實例形式較為詳細的分析了C#接口的功能、定義及實現(xiàn)技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-10-10
  • C# Request.Form用法案例詳解

    C# Request.Form用法案例詳解

    這篇文章主要介紹了C# Request.Form用法案例詳解,本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • C#的this關鍵字的2種用法

    C#的this關鍵字的2種用法

    這篇文章主要給大家分享的是C#的this關鍵字的2種用法,在使用C#的過程中,發(fā)現(xiàn)this關鍵是比較少用的,但是在下面這二個場合下是必須要使用的,不使用它是解決不了問題。下面我們就來看看文章的具體內(nèi)容吧
    2021-10-10
  • C#實現(xiàn)批量Word轉(zhuǎn)換Html的示例代碼

    C#實現(xiàn)批量Word轉(zhuǎn)換Html的示例代碼

    這篇文章主要為大家詳細介紹了如何利用C#批量Word轉(zhuǎn)換Html的功能,文中的示例代碼講解詳細,對我們學習C#有一定的幫助,感興趣的小伙伴可以跟隨小編一起了解一下
    2022-12-12
  • c# 自定義泛型鏈表類的詳解

    c# 自定義泛型鏈表類的詳解

    本篇文章是對c#中自定義泛型鏈表類進行了詳細的分析介紹,需要的朋友參考下
    2013-05-05
  • C#棧和隊列的簡介,算法與應用簡單實例

    C#棧和隊列的簡介,算法與應用簡單實例

    今天小編就為大家分享一篇關于C#棧和隊列的簡介,算法與應用簡單實例,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2018-10-10
  • Entity?Framework配置關系

    Entity?Framework配置關系

    這篇文章介紹了Entity?Framework配置關系的方法,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-06-06

最新評論