2010-02-17 6 views
2

Je développe actuellement une application pour un appareil de mesure d'angle (goniomètre). Un composant DataGridView est utilisé pour configurer les valeurs nominales (et les tolérances) pour les angles mesurés. L'utilisateur doit pouvoir saisir les angles de différentes manières, par exemple 2 ° (pour les degrés) ou 120 '(pour les minutes d'arc) ou 7200 "(pour les arcsecondes) Pour cela j'ai créé un analyseur qui va convertir une chaîne valide à la valeur angulaire (un double, en degré) ou l'échec si la chaîne n'est pas valide..NET DataGridView: façon correcte de gérer les erreurs d'analyse lors de la gestion de l'événement CellParsing?

si je comprends bien le point de temps correct d'invoquer l'analyseur est lors de la manipulation de l'événement CellParsing. Mais comment puis-je correctement gérer le cas lors de l'analyse a échoué?

Selon exemple de code MSDN je reçois l'idée que je devrais quitter la propriété ParsingApplied du DataGridViewCellParsingEventArgs (qui est passé au gestionnaire CellParsing) mis à false. Si je le fais (et laisse la propriété Value inchangée) un FormatException est lancé par des tentatives de conversion qui sont ensuite effectuées par l'infrastructure qui déclenche l'événement DataError. Au lieu d'un FormatException qui contient un message d'erreur plutôt non spécifique, j'aimerais avoir une exception qui contient des informations sur l'erreur spécifique qui a causé l'échec de mon implémentation de l'analyseur afin que je puisse afficher un message d'erreur spécifique dans l'événement DataError. J'ai supposé que je peux lancer un FormatException moi-même du gestionnaire CellParsing mais cette exception n'est pas attrapée par le cadre et n'aboutit donc pas à déclencher l'événement DataError (en fait le gestionnaire d'exception extrême termine l'application).

Répondre

0

Les erreurs de données DataGridView sont un cauchemar.
J'ai dû faire face à cela beaucoup récemment, et à la fin j'ai juste abandonné et fait ma propre implémentation de DataGridViewColumn et DataGridViewCell. Cela évite toutes les erreurs d'analyse, car vous le gérez vous-même dans la méthode ParseFormattedValue de votre cellule. Mon expérience avec tout cela était turbulente mais très utile, car j'ai maintenant une interface utilisateur qui permet d'entrer de nombreux types de données dans une cellule.

Vous pouvez voir du code que j'ai créé pour faire cela dans une question que j'ai posté sur MSDN here.
Vous pouvez adapter cela pour correspondre à votre propre mise en forme (j'espère que vous pouvez voir ce qu'il fait).

+0

Eh bien, merci! Je suppose que je devrais essayer ça ... –

+0

J'espère que ça va bien pour vous. Si vous avez des problèmes, n'hésitez pas à commenter et j'essaierai de vous aider. Bonne chance! – Codesleuth

Questions connexes