2010-07-14 3 views
3

La validation de la zone de texte de mon application C# me pose problème. Le fait est que la zone de texte ne doit accepter que les valeurs décimales. cela signifie donc qu'il ne devrait pas y avoir de lettres ou d'autres symboles à part le '.' symbole. Le filtre de lettre, je peux manipuler. Cependant, je ne sais pas exactement comment je peux gérer pour filtrer le nombre de '.' que la zone de texte devrait accepter. Si quelqu'un a une idée de comment faire cela, s'il vous plaît donnez-moi une idée.Validation TextBox - C#

Merci beaucoup :)

Répondre

3

cela devrait fonctionner !!!

modifié pour seulement une décimale

private void txtType_KeyPress(object sender, KeyPressEventArgs e) 
    { 
     if (e.KeyChar == (char)Keys.Back || (e.KeyChar == (char)'.') && !(sender as TextBox).Text.Contains(".")) 
     { 
      return; 
     } 
     decimal isNumber = 0; 
     e.Handled = !decimal.TryParse(e.KeyChar.ToString(), out isNumber); 
    } 
+0

c'est exactement ce que je peux faire maintenant. Cependant, cela ne filtre pas le nombre de points décimaux que la zone de texte doit accepter. il accepte toujours 2 points décimaux. :( – Smiley

+0

@Kim Rivera: là vous allez .... – Luiscencio

+0

C'est exactementyyyyyyyyyyyyyyy ce que j'ai needddddddddddddddddddd !! Merci maintenant tout ce que je dois faire est d'étudier votre code :) Merci beaucoup. Attendez. Je ne peux pas utiliser la touche de retour arrière? hehe. – Smiley

1

Juste une pensée: si vous surveillez les décimales, gardez simplement un drapeau bool dans votre contrôle pour dire: « Je l'ai déjà eu un point »; les points suivants ne sont pas valides.

Sinon, lors de la vérification des décimales, vous pouvez utiliser Contains:

if (textbox.Text.Contains("."))

également, passez en revue cet exemple disponible sur MSDN (NumericTextBox):

http://msdn.microsoft.com/en-us/library/ms229644(VS.80).aspx

+0

oui, j'ai vu ceci et c'est en fait où j'ai appris comment restreindre les lettres et certains symboles dans ma zone de texte. Cependant, ce que je cherche est quelque chose qui limiterait la zone de texte pour accepter seulement un point décimal. – Smiley

+0

+1 pour l'exemple de zone de texte numérique. Il a toujours besoin du drapeau "J'ai déjà un séparateur décimal", comme vous le suggérez. –

+0

@Kim J'ai expliqué un moyen simple de signaler cela. Lorsque vous détectez un point décimal, définissez votre indicateur sur true. Lors de détections ultérieures, vous vous comportez comme s'il n'était pas valide. –

4
decimal value; 
bool isValid = decimal.TryParse(textBox.Text, out value); 

if (!isValid) 
{ 
    throw new ArgumentException("Input must be a decimal value"); 
} 
+0

+1 Canonical --- –

+0

Localisable, compréhensible, + 1able –

+0

C'est ce que mon application faisait avant. Cependant, j'évite beaucoup de messages d'erreur pour apparaître. donc je veux juste que la zone de texte soit filtrée. mais merci encore pour cela :) je l'apprécie. hehe – Smiley

0

Utilisez à la place un MaskedTextBox et définissez le masque pour accepter uniquement les décimales.