2012-03-12 3 views
0

J'utilise ce code pour autoriser seulement l'entrée 1 point décimal. Ça fonctionne bien. Mais comment je peux le faire pour permettre l'entrée seulement 2 nombres après le point décimal?Autoriser l'entrée seulement 2 décimales (C# + WindowsPhone)

C#

private void txtPrecio_KeyDown(object sender, KeyEventArgs e) 
    { 
     TextBox txt1 = (TextBox)sender; 

     if (txt1.Text.Contains(".") && e.PlatformKeyCode == 190) 
     { 
      e.Handled = true; 
     }   
    } 

Répondre

1

Vérifiez simplement si le dernier caractère est une valeur numérique, l'avant-dernier caractère est une valeur numérique et le caractère avant est un point/période.

Ou si vous vouliez ue un Regex *, quelque chose comme

if (Regex.IsMatch(".[0-9]{2}$", txt1.Text) 
{ 
    e.Handled = true; 
} 

* -Ce regex a été fait de la mémoire, mais il cherche (destinée à) pour voir si le texte endswith une décimale et 2 caractères numériques.

+0

merci. J'ai suivi votre exemple et j'ai créé ce Regex et fonctionne bien: if (Regex.IsMatch (txt1.Text, "^ \\ d * \\. \\ d {2} $")) e.Handled = true; – aco

2

Peut-être this ou un autre Silverlight basé modifier masqué pourrait vous aider à résoudre votre problème de façon beaucoup plus propre?

Espérons que cela aide.

1

Pourquoi ne pas formater seulement le résultat:

double e = double.Parse(text); 
string nText = string.Format("{0:0.##}", e); 
e = double.Parse(nText); 
Questions connexes