2012-01-17 231 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'属性,查看是否已分配用于打开对话框的按钮 - 确保将其设置为无。