2012-01-17 229 views
2

每當我調用folderbrowserdialog.showDialog()我的應用程序崩潰。 我正在使用之前工作的代碼,所以它不能是代碼。FolderBrowserDialog崩潰應用程序

try 
{ 
    FolderBrowserDialog fbd = new FolderBrowserDialog(); 
    fbd.RootFolder = Environment.SpecialFolder.Desktop; 
    if (fbd.ShowDialog() == DialogResult.OK) 
    { 
     // this.Minecraft.Text = fbd.SelectedPath; 
    } 
} 
catch 
{ 
} 

它不會引發任何錯誤,也不例外,那裏只是彈出的小負荷圈,然後應用程序走了,我用不同的.net應用程序注意到它之前呢!

btw:將重新安裝.net 4的工作?

+1

「即時通訊使用之前工作過的代碼,所以它不能是代碼」...我會學會不那麼自滿自己的代碼。大多數錯誤是由於「代碼」。如果您確定這不是您的代碼,那麼您將發佈在錯誤的地方! – spender 2012-01-17 15:20:36

+0

在Windows應用程序事件日誌中會有更多關於崩潰性質的信息。你需要提供它。 – spender 2012-01-17 15:23:21

+1

它沒有捕獲任何異常catch(Exception ex){}? – pistipanko 2012-01-17 15:23:49

回答

4

嘗試將此添加到您的應用程序中(最好在Main()方法的開始處)。看看exceptions.txt文件在達到冰點時是否有任何異常記錄。

 AppDomain.CurrentDomain.FirstChanceException += (sender, e) => 
     { 
      if ((e == null) || (e.Exception == null)) 
      { 
       return; 
      } 

      using (var sw = File.AppendText(@".\exceptions.txt")) 
      { 
       sw.WriteLine(e.ExceptionObject); 
      }     
     }; 

     AppDomain.CurrentDomain.UnhandledException += (sender, e) => 
     { 
      if ((e == null) || (e.ExceptionObject == null)) 
      { 
       return; 
      } 

      using (var sw = File.AppendText(@".\exceptions.txt")) 
      { 
       sw.WriteLine(e.ExceptionObject); 
      }     
     }; 
+0

這段代碼在某些環境下會失敗(特別是如果可執行文件沒有對工作目錄的寫權限) – spender 2012-01-17 15:28:54

+0

我會嘗試一下,我目前也在嘗試重新安裝.net 4,以防萬一,但幾乎完成... – killie01 2012-01-17 15:30:02

+0

所以我做了,我發現我不得不在64位調試,讓它工作。 – killie01 2012-01-19 11:35:42

0

,你應該知道的FolderBrowserDialog,SaveFileDialog另一件事,打開文件對話框是,如果你從可執行文件屬性的兼容性選項卡上的「禁用視覺主題」他們不工作。

1

我只是與FolderBrowserDialog一樣的問題,並發現source of evilness。註釋/取消註釋[STAThread],看到了差距:

using System; 
using System.Windows.Forms; 

namespace WindowsFormsApplication1 
{ 
    static class Program 
    { 
     //[STAThread] 
     static void Main() 
     { 
      new FolderBrowserDialog().ShowDialog(); 
     } 
    } 
} 
+0

謝謝!沒有這個答案,我無法發現問題。在我的情況下,調用FolderBrowserDialog將無限期地卡住,什麼都不做。 – Jani 2015-08-01 16:46:47

0

希望這有助於別人 - 我其實是有這個問題,原來我不小心分配的DialogResult到由發射的FolderBrowserDialog按鈕!因此,只要代碼執行完畢,就會將「取消」的DialogResult返回給CLR並終止我的程序。檢查Visual Studio中的'DialogResult'屬性,查看是否已分配用於打開對話框的按鈕 - 確保將其設置爲無。