2009-07-22 7 views
0

Je lie le paramètre de valeur de texte d'une zone de texte à ma variable dans mon fichier de configuration. Je ne considère que l'entrée de cette zone de texte pour être valide si c'est un nombre entier supérieur à 1. En ce moment, je laissais l'utilisateur écrire ce qu'il voulait dans la boîte, et je le laissais seulement enregistrer les paramètres après avoir appelé une fonction de validation. Le problème semble être que ma variable de liaison dans la classe Settings semble être mise à jour dès que la zone de texte est en cours d'édition, et c'est un comportement que je voudrais ignorer. Comment puis-je faire ceci?(.net) Paramètres de configuration question de base

Répondre

0

Ne liez pas la valeur à la zone de texte. Commencez par faire comme Matthew dit et "utilisez l'événement OnValidating sur la zone de texte pour faire votre code de validation", puis utilisez l'événement OnValidated pour mettre à jour la valeur de configuration.

0

Vous pouvez utiliser l'événement OnValidating sur la zone de texte pour faire votre code de validation et définir e.Cancel true si la validation ne passe pas (et informer l'utilisateur en quelque sorte, peut-être un MessageBox).

+0

Il semble que l'événement Validating n'ait rien à voir avec les liaisons. Cela semble se produire lorsque votre contrôle perd le focus. Le problème sera toujours le même, car lorsque vous lierez votre contrôle, il mettra simplement à jour la variable de liaison dès que vous tapez ce que vous voulez dans le contrôle. Je ne veux pas forcer mon utilisateur à écrire correctement à la première fois, je veux juste que les variables de liaison soient toutes correctes lorsque l'utilisateur appuie sur le bouton Enregistrer (et exécute ensuite le code de validation). –

+1

Alors même si drs9222 est downvoted, c'est tout ce que vous pouvez faire. La liaison ne doit pas être mise à jour avant la validation. –

+0

N'y a-t-il aucune méthode qui vous permet d'arrêter la liaison, et d'autres pour mettre à jour les liaisons? –

0

Vous pouvez utiliser une MasktedTextBox (avec ou sans masque), puis vous abonner à l'événement Validating (ou TypeValidationCompleted) pour ajouter votre validation personnalisée. Je crois que la valeur liée est seulement enregistrée après que la validation s'est terminée avec succès.

Questions connexes