Problème de FormatNumeric d'un textbox

Résolu
omaimainfo
Messages postés
37
Date d'inscription
lundi 20 novembre 2017
Statut
Membre
Dernière intervention
13 février 2020
- 12 juil. 2018 à 11:34
omaimainfo
Messages postés
37
Date d'inscription
lundi 20 novembre 2017
Statut
Membre
Dernière intervention
13 février 2020
- 13 juil. 2018 à 15:59
Bonjour,
je veux rendre le contenu d'un textbox au formatNumbre en utilisant l'événement textchanged ,j'ai essayer avec ce code ,mais le problème quand je tape 4002 ça donne 2004.00 je veux que le résultat soit 4002.00
 textbox.Text = FormatNumber(textbox.Text) 


Merci d'avance

6 réponses

cs_Le Pivert
Messages postés
7743
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
9 mai 2022
129
Modifié le 12 juil. 2018 à 12:04
Bonjour,

Pourquoi ne pas utiliser une masked textbox

https://www.codeproject.com/tips/666932/using-masked-textbox-in-net


0
vb95
Messages postés
2629
Date d'inscription
samedi 11 janvier 2014
Statut
Modérateur
Dernière intervention
13 mai 2022
151
Modifié le 12 juil. 2018 à 12:22
bonjour
Utilise l'évènement TextBox1 KeyPress
Une fois quer ton nombre est tapé entièrement tu fais "Entrée" et cela formate le nombre complet
Le Try Catch gère l'erreur de saisie

Private Sub TextBox1_KeyPress(sender As Object, e As KeyPressEventArgs) Handles TextBox1.KeyPress

        If e.KeyChar = Convert.ToChar(13) Then
            Try
                TextBox1.Text = FormatNumber(TextBox1.Text)
            Catch
                MessageBox.Show("Erreur saisie")
                TextBox1.Text = String.Empty
            End Try
        End If

    End Sub


0
omaimainfo
Messages postés
37
Date d'inscription
lundi 20 novembre 2017
Statut
Membre
Dernière intervention
13 février 2020

12 juil. 2018 à 18:03
Merci pour votre réponse.
0
vb95
Messages postés
2629
Date d'inscription
samedi 11 janvier 2014
Statut
Modérateur
Dernière intervention
13 mai 2022
151
12 juil. 2018 à 18:05
Bonjour
si cela te convient mets le message en Résolu avec la roue dentée
Merci
0
omaimainfo
Messages postés
37
Date d'inscription
lundi 20 novembre 2017
Statut
Membre
Dernière intervention
13 février 2020

Modifié le 13 juil. 2018 à 15:54
Bonjour ,

Pour le séparateur des milliers j'ai essayée avec ce code,mais quand je clique sur le point '.' rien n'est afficher .
 
Private Sub Text1_TextChanged(sender As Object, e As EventArgs) Handles Text1.TextChanged
        If Text1.Text <> "" Then
            Dim MonNombre As Decimal = Text1.Text
            Dim Resultat As String = MonNombre.ToString("### ### ###.##")
            Text1.Text = Resultat
            Text1.SelectionStart = Len(Text1.Text)
        End If
    End Sub 


Private Sub Text1_KeyPress(sender As Object, e As KeyPressEventArgs) Handles Text1.KeyPress
        If Not Char.IsControl(e.KeyChar) AndAlso Not (Char.IsNumber(e.KeyChar)) AndAlso e.KeyChar <> "."c Then
            e.Handled = True
        End If
        If e.KeyChar = Chr(13) Then SendKeys.Send("{TAB}")

    End Sub


EDIT : Correction coloration syntaxique

Merci .
0
vb95
Messages postés
2629
Date d'inscription
samedi 11 janvier 2014
Statut
Modérateur
Dernière intervention
13 mai 2022
151
13 juil. 2018 à 14:24
En France il faut utiliser la virgule dans les zones de texte pour les nombres décimaux
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Whismeril
Messages postés
17329
Date d'inscription
mardi 11 mars 2003
Statut
Modérateur
Dernière intervention
17 mai 2022
596
13 juil. 2018 à 14:51
Bonjour,
Le point ou la virgule en séparateurs décimal dépendent de la « culture »de l’application.
Par défaut cette culture est celle du PC. Si le séparateur du pc est la virgule, alors le point ne sera pas compris et inversement.
Tu peux choisir une culture spécifique pour ton application, ou même pour un thread.
Tu peux aussi gérer des cas particulier par le code.

Formatter un nombre dans le textchanged n’est pas judicieux, en effet le fait de formatter change le texte et donc redéclenche l’événement.

Il est préférable d’utiliser LostFocus ou la validation.

Enfin, il faut eviter les sendkey ça entre souvent en conflit avec ce que tape vraiment l’utilisateur.

Pour passer le focus à TextBox2, par exemple, il suffit de
TextBox2.Focus()



Un dernier point, quand tu postes un code, pense à forcer la coloration en basic, sinon ça fait un pavé gris, sans numérotation et pas scrollable.
Voir ici http://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code
0
omaimainfo
Messages postés
37
Date d'inscription
lundi 20 novembre 2017
Statut
Membre
Dernière intervention
13 février 2020

13 juil. 2018 à 15:59
Merci .
0