2010-09-17 6 views
2

J'ai le code suivant dans mon projet, deleteselector est une forme qui a un datagridview (avec des colonnes autosize) sur elle.Pourquoi cette erreur n'est-elle pas détectée?

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

La prise try est parce qu'une forme de pop-up avec un gridview sur elle trows une InvalidOperationException de temps en temps. Ceci est la solution proposée, voir

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

Plus tôt, je Voir sur le deleteSelector, et la solution de contournement a parfaitement fonctionné. Maintenant, avec showdialog il semble que l'erreur n'est plus attrapée (je reçois un message d'erreur non verrouillé). Pourquoi l'erreur n'est-elle pas interceptée?

Répondre

4

ShowDialog exécute la boîte de dialogue sur un thread distinct, de sorte que l'exception est renvoyée dans une autre pile à votre gestionnaire d'exceptions.

Je vous suggère d'essayer de trouver une solution différente - attraper InvalidOperationException est assez horrible, et je ne voudrais pas parier que la forme serait dans un état raisonnable après.

+0

Y at-il un moyen d'attraper cette exception alors? Beaucoup de gens ont essayé de trouver une solution de contournement, et c'est ce qu'ils ont suggéré à la fin. La solution de contournement a bien fonctionné jusqu'à ce que je décide d'utiliser ShowDialog au lieu de montrer – willem

+2

@willem: Vous pourriez essayer d'utiliser 'Application.UnhandledException' - que * pourrait * le faire ... –

+0

Merci, je vais essayer – willem

Questions connexes