2

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

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 上使用了 Show,解决方法效果很好。现在,使用 showdialog 似乎不再捕获错误(我收到未捕获的错误消息)。为什么错误没有被捕获?

4

1 回答 1

4

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

我建议您尝试找到一种不同的解决方法 - 只是捕捉InvalidOperationException是非常可怕的,我不想打赌这种形式之后会处于合理状态。

于 2010-09-17T09:03:54.743 回答