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