2010-09-17 89 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

相關問題