C# de validation de la Saisie d'une zone de texte: float
Cette soi-disant facile m'a donné des maux de tête. Je veux simplement laisser l'utilisateur entrer le texte qui réussit float.TryParse
dans un Textboxish de contrôle.
Que je pouvais utiliser une zone de texte normale et vérifier le Texte dans certains btnOK_Click, mais ce n'est évidemment boiteux. Aussi, il y a une belle intégré de contrôle MaskedTextBox, mais je n'ai pas réussi à définir le masque d'être égale à float.TryParse
. Aussi, il semble à vérifier la validité uniquement lorsqu'un changement de focus se produit.
Creuser autour sur le net apporté quelques idées intéressantes, mais aucun n'est aussi beau que je le voudrais.
Comment avez-vous résolu ce problème? Je n'ai tout simplement manquer une solution évidente, ou dois-je mettre en œuvre cette fonctionnalité moi-même?
Je suis au courant de quelques threads sur, mais il n'y a pas de solution viable pour être trouvé.
mise à Jour: Oui, WinForms.
OriginalL'auteur mafu | 2009-05-06
Vous devez vous connecter pour publier un commentaire.
Modifier
Bien qui fait qu'il est beaucoup plus facile... il suffit d'ajouter une
Validating
Gestionnaire d'Événement à votre zone de texteet ne le
TryParse
dans le code derrière. Si ses invalide, invite l'utilisateur en tant que tel.Valider le feu lorsque l'utilisateur a fini de taper et déplace le focus de la zone de texte si vous avez besoin de le faire à la volée de la vérification, vous pouvez gérer les TextChanged ou sur la Touche/KeyUp des gestionnaires d'Événement au lieu
Original
Est-ce dans asp.net ou winforms/wpf
Si son asp.net, vous pouvez utiliser une combinaison de
RegularExpressionValidator
(pour tenir compte de la virgule de séparation, 1 point décimal, etc...) et unRangeValidator
pour définir les valeurs min/max pour un float.A côté de cela, le seul moyen de garantir ce serait pour envelopper la zone de texte dans un updatepanel, coller une CustomServerValidator sur elle, et dans le serveur de valider la fonction, faire un
TryParse
sur leTextBox.Text
valeur, si elle réussit, EST VALABLE, si elle échoue, NON VALIDEOriginalL'auteur Eoin Campbell
Être prudent en utilisant
Validating
et la validation de faux. Vous trouverez peut-être que, à moins que vous entrez des données valides, vous ne pouvez pas déplacer la zone de texte qui est vraiment un gros la convivialité de la douleur.Je résoudre ce problème en essayant simplement un
TryParse()
surLostFocus
et si le TryParse échoue je de couleur de la zone de texte d'arrière-plan d'une teinte rougeâtre à l'évidence que quelque chose est incorrect.Votre idée de changer la couleur était belle. Dans ma solution, coloriage immédiatement sur des valeurs non valides indique clairement à l'utilisateur qu'il faut changer la valeur.
J'ai mis TryParse() dans TextChanged et définir backcolor de la zone de texte en rouge lorsque TryParse échoue et réinitialiser backcolor de la Couleur.Vide lorsque TryParse passe. Cela donne instantanément du feed-back que l'utilisateur tape.
OriginalL'auteur rein