为什么这个错误没有被抓住?

我的项目中有以下代码,deleteselector是一个包含datagridview(带有自动调整列)的表单。

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

try catch是因为一个带有gridview的弹出窗体会偶尔出现一次invalidoperationexception。 这是建议的解决方法,请参阅

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

早些时候,我在deleteSelector上使用了Show,并且解决方法工作得很好。 现在,使用showdialog似乎错误不再被捕获(我得到一个未捕获的错误消息)。 为什么错误没有被捕获?

ShowDialog在一个单独的线程上运行该对话框,因此exception将被抛出到exception处理程序的不同堆栈中。

我建议你尝试找到一个不同的解决方法 – 只是捕获InvalidOperationException是非常可怕的,我不想打赌,之后表格会处于合理的状态。