2010-09-17 3 views
2

У меня есть следующий код в моем проекте, removeeselector - это форма, на которой есть datagridview (с автосохраненными столбцами).Почему эта ошибка не попадает?

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

Пытаться поймать потому, что всплывающее окно формы с GridView на нем trows в 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, и обходной путь работал отлично. Теперь, с showdialog, кажется, что ошибка больше не улавливается (я получаю сообщение об ошибке). Почему ошибка не улавливается?

ответ

4

ShowDialog запускает диалог в отдельном потоке, поэтому исключение создается в другом стеке для вашего обработчика исключений.

Я предлагаю вам найти другое обходное решение - просто ловить InvalidOperationException довольно ужасно, и я не хотел бы держать пари, что форма будет в разумном состоянии после этого.

+0

Есть ли способ поймать это исключение? Многие люди пытались найти обходной путь, и это то, что они предложили в конце. Обходной путь работал нормально, пока я не решил использовать ShowDialog вместо show – willem

+2

@willem: вы можете попробовать использовать 'Application.UnhandledException' - это * может * сделать это ... –

+0

Спасибо, я попробую это – willem

Смежные вопросы