2010-09-17 36 views
2

我在我的项目中有下面的代码,deleteselector是一个窗体,它上面有一个datagridview(带有autosize列)。为什么这个错误没有被捕获?

try 
{ 
     if (deleteSelector.ShowDialog() == DialogResult.OK) 
     { 
     } 
} 
catch (InvalidOperationException) 
{ 
    //Bug workaround 
} 

try catch是因为带有gridview的弹出窗体会在一段时间内导致一个无效操作异常。这是建议的解决方法,请参阅

http://connect.microsoft.com/VisualStudio/feedback/details/145633/invalidoperationexception-thrown-when-a-form-with-a-bound-datagridview-with-auto-sizing-columns-is-shown

早些时候,我曾经显示在deleteSelector,和解决方法完美。现在,使用showdialog,似乎错误不再被捕获(我得到一个未捕获的错误消息)。为什么错误没有被捕获?

回答

4

ShowDialog在单独的线程上运行对话框,所以异常被抛出到异常处理程序的不同堆栈中。

我建议你尝试找到一个不同的解决方法 - 只是捕获InvalidOperationException是非常可怕的,我不想打赌,形式将在一个明智的状态后。

+0

有没有办法抓住这个异常呢?很多人试图找到解决办法,这是他们最终提出的建议。解决方法工作得很好,直到我决定使用ShowDialog而不是show – willem 2010-09-17 09:08:58

+2

@willem:你可以尝试使用'Application.UnhandledException' - 这可能会做到这一点... – 2010-09-17 09:17:11

+0

谢谢,我会尝试 – willem 2010-09-17 09:22:15

相关问题