日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

OpenFileDialog 类的ShowDialog() 错误的解决

發布時間:2023/12/2 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 OpenFileDialog 类的ShowDialog() 错误的解决 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

首先,一個類里,有個linkLabel1

private OpenFileDialog openFileDialog1;
private DialogResult result;

private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
??????? {

??????????? openFileDialog1 = new OpenFileDialog();
??????????? string patch = Application.StartupPath + "\\LOG\\";
??????????? openFileDialog1.InitialDirectory = patch;
??????????? openFileDialog1.Filter = "xls files (*.xls)|*.xls";

????????????result = openFileDialog1.ShowDialog();

??????????? if (result == DialogResult.OK)
??????????? {
??????????????? if (openFileDialog1.FileName != "")
??????????????? {
??????????????????? Process.Start(openFileDialog1.FileName);
??????????????? }
???????????????
??????????? }

???????????
??????? }

就會報?
在可以調用 OLE 之前,必須將當前線程設置為單線程單元(STA)模式。請確保您的 Main 函數帶有 STAThreadAttribute 標記。 只有將調試器附加到該進程才會引發此異常。

在測試小程序里沒有問題,當移到大程序里就這樣的問題了。可能是線程多的原因。解決辦法就是添加線程,代碼如下

private Thread invokeThread;

private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
??????? {
??????????? openFileDialog1 = new OpenFileDialog();
??????????? openFileDialog1.InitialDirectory = patch;
??????????? openFileDialog1.Filter = "xls files (*.xls)|*.xls";

??????????? invokeThread = new Thread(new ThreadStart(InvokeMethod));
??????????? invokeThread.SetApartmentState(ApartmentState.STA);
??????????? invokeThread.Start();
??????????? invokeThread.Join();

??????????? if (result == DialogResult.OK)
??????????? {
??????????????? if (openFileDialog1.FileName != "")
??????????????? {
??????????????????? Process.Start(openFileDialog1.FileName);
??????????????? }

??????????? }
??????? }

private void InvokeMethod()
??????? {
??????????? result = openFileDialog1.ShowDialog();
??????? }

問題得到解決

轉載于:https://www.cnblogs.com/verna/archive/2011/02/15/1955276.html

總結

以上是生活随笔為你收集整理的OpenFileDialog 类的ShowDialog() 错误的解决的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。