2010-09-07 4 views
2

J'ai une application winform avec une colonne TimeSpan qui affiche la partie heures/minutes d'une date. Lorsque l'utilisateur entre le texte, il est converti en un TimeSpan en utilisant TimeSpan.TryParse(). Cela fonctionne comme prévu lorsque l'entrée de l'utilisateur est "11:00" en définissant une valeur de 11 heures. Le problème est que si l'utilisation entre "1100" il est analysé comme 1100 jours ce qui n'est pas ce que je veux, et ne dit pas simplement "mauvaise entrée" dans l'événement "CellValidating" comportement satisfaisant.Modifier le comportement de gestion des entrées utilisateur DataGridViewCell

La saisie des utilisateurs est fournie dans la propriété readonly DataGridViewCellValidatingEventArgs.FormattedValue. Je ne peux donc pas modifier la valeur transmise dans la chaîne d'appel. DataGridViewTextBoxCell.EditedFormattedValue est également en lecture seule et je ne trouve aucun autre événement ou propriété permettant de remplacer le comportement par défaut.

C'est très frustrant. Je peux écrire une chute échelonnée à travers un validateur qui peut gérer plusieurs formats d'entrée utilisateur et obtenir la valeur voulue de chacun; mais à moins de rejeter toute la liaison de données fortement typée que propose le framework et de créer à la place un objet shim qui stocke toutes les valeurs sous forme de chaînes, il ne semble pas y avoir de moyen de le faire.

Répondre

2

En quelque sorte parmi les 10 milliards d'événements dans le DataGridView j'ai réussi à négliger CellParsing. Le remplacer me permet de faire ce que je dois faire.

Questions connexes