6
votes

Comment faire une zone de texte n'accepte que des chiffres et des formats avec des virgules?

J'ai besoin d'une zone de texte qui:

(1) n'accepte que des chiffres en tant que caractères. P>

(2) continue automatiquement à formater les valeurs numériques avec les Types d'utilisateur. P >

Par exemple, P>

     1 becomes        1.00
    10 becomes       10.00
   100 becomes      100.00
  1000 becomes    1,000.00
 10000 becomes   10,000.00
100000 becomes 1,00,000.00


1 commentaires

Si ce 1,00 000,00 soit 100 000,00 peut-être?


4 Réponses :


0
votes

0 commentaires

4
votes

Formatage d'un numéro tandis que l'utilisateur saisit très mal les œuvres générales. Vous devez utiliser une carte masquée pour cela. Beaucoup de code sur Internet qui indique comment filtrer la clé de frappe afin que seuls les chiffres puissent être entrés. La majeure partie de celle-ci est trivialement vaincue en utilisant la commande Coller.

La manière Saine est de traiter l'utilisateur capable de compétences de base comme taper un numéro et lui rappelle doucement qu'elle s'est faite. L'événement de validation est fabriqué pour cela. Qui est également le moment idéal pour formater le nombre. Ajoutez une nouvelle classe à votre projet et collez ce code: xxx

compile. Dressez la nouvelle commande de numéro de numéro de numéro de la boîte à outils sur votre formulaire. Déposez également une erreur d'erreur sur le formulaire afin que les erreurs de frappe peuvent être rapportées de manière modeste, définissez la propriété ErrorProvider du nouveau contrôle. Modifier éventuellement la propriété de fraction. Vous pouvez vous abonner à l'événement ValueChaged pour savoir que la valeur a été modifiée.


0 commentaires

0
votes

Il y a un moyen très simple: à l'aide d'événements TextChanged et de départ.

private void textBox_Leave(object sender, EventArgs e)
{
   // Since you were validating the number while typing now there is no need for TryParse
   decimal theNumber = decimal.Parse((sender as TextBox).Text);
   (sender as TextBox).Text = string.Format("{0:N2}", theNumber);
}


0 commentaires

0
votes

Je ne sais pas si cela va vous aider, mais voilà ici:

try
{
    double number = Convert.toDouble(textBox.Text);
    string[] digits = Regex.Split(textBox.Text, @"\W+");
    int x = 0;
    List<string> finalNumber = new List<string>();
    while(x < numbers.Length)
    {
        if(digits[x] == ".")
            break;
        if(x%3 = 0 && x != 0)
        {
            finalNumber.Add(",");   
        }
        finalNumber.Add(digits[x]);
        x++;
    }
    string finalNumberJoined = "";
    foreach(var digit in finalNumber)
    {
        finalNumberJoined = finalNumberJoined + digit;
    }
}
catch
{
    //not a number
}


0 commentaires