IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Forms Discussion :

[VB.NET] limiter les valeurs d'un champs aux nombres


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 26
    Par défaut [VB.NET] limiter les valeurs d'un champs aux nombres
    Bonjour,

    Présentation :
    Ceci est mon premier post sur votre forum. Je ne suis pas très à l'aise pour l'instant avec, si bien que je ne sais même pas sur quel critère faire une recherche pour régler mon problème.
    Aussi, j'espères que vous me pardonnerez si j'ai posté au mauvais endroit.

    Contexte :
    Je suis un newbie en programmation.
    Je viens d'installer Visual Studio Express 2005 et j'essaie de faire mon 1er programme :
    un convertisseur FRANCS / EUROS.

    J'ai fais la partie esthetique et les choses se compliquent maintenant que je dois mettre du code.

    J'ai pas mal avancé et le convertisseur fonctionne. Je voudrais maintenant le déboguer.

    Problème :
    Mon problème actuel est le suivant :
    Si à la place de la somme à convertir, on met du texte, ça fait planter l'opération.

    Je voudrais donc forcer le champs "à convertir" à ne recevoir que des chiffres et rien d'autre (faire un champ au format "numerique").

    Je pourrai bien sur faire un MsgBox qui dise qu'on n'accepte que des chiffres mais, je voudrais savoir si c'est possible de carrément ne pouvoir que saisir des chiffres et que si on essaie de taper des lettres, la saisie de ne fasse pas. Un peu comme dans une cellule Excel dont on aurait défini le format à "numerique".

    Je vous met ci-joint une image de mon convertisseur

    Merci pour votre aide.
    Images attachées Images attachées  

  2. #2
    Membre confirmé
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    122
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 122
    Par défaut
    Alors pour ton probleme je te recommande d'utiliser le control NumericUpDown, t'as un quelque proprietes pas mal, genre limiter le nombre de chiffres apres la virgule des trucs comme ca et facile a utiliser en plus.

    Et une fois tes calculs fait si tu veux afficher ton resultat dans une messagebox tu fais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    MessageBox::Show(Convert::ToString(resulat));

  3. #3
    Membre expérimenté Avatar de toniolol
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Juin 2005
    Messages
    281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 281
    Par défaut
    Salut,
    pour ma part je resterai avec un TextBox avec un contrôle sur KeyPress genre if not isnumeric...
    Tu peux aussi ajouter un composant ErrorProvider qui sera plus esthétique (et moins ch***) qu'une MessageBox.
    Je n'ai rien testé mais voilà le fond de ma pensée !

  4. #4
    Membre émérite
    Avatar de HULK
    Inscrit en
    Juillet 2003
    Messages
    1 276
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 276
    Par défaut
    avant de faire quoi que ce soit tu mets ce code pour vérifier que l'utilisateur a bien saisi un chiffre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     If not isnumeric(textbox.Text) Then
                ErrorProvider1.SetError(textbox, "il faut un chiffre !")
     Exit Sub
     Else
                ErrorProvider1.SetError(textbox, "")
     End If

  5. #5
    Expert confirmé
    Avatar de neo.51
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    2 663
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations forums :
    Inscription : Avril 2002
    Messages : 2 663
    Par défaut
    Bonjour,

    Il y a plusieurs solutions à ton problème.

    1)Utiliser un controle qui n'accépte que les chiffres (genre numericUpAndDown)
    2)Intercépter l'évènement KeyPress de ton textbox, tester si la touche appuyée est un chiffre, si c'est pas un chiffre tu annules la frappe.
    3)Laisser rentrer du texte dans ta textBox mais tester que la valeur est bien un nombre avant de lancer le calcul

    ... il y a aussi le controle MasquedTextBox qui te permets de faire un équivalent de la solution 2 mais j'ai jamais trop utilisé (à la base c'est plutôt prévu pour la saisie sous forme standardisée genre une adresse ip un numéro de télephonne, ...)

  6. #6
    Rédacteur
    Avatar de abelman
    Inscrit en
    Février 2003
    Messages
    1 106
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 1 106

  7. #7
    Membre actif
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 26
    Par défaut
    Je vous remercie pour vos réponses.
    J'ai l'impression que "numericUpAndDown" correspondrait à ce que je voudrai faire. Je vais me renseigner là dessus (en gardant sous le coude les autres solutions).
    Merci encore.

  8. #8
    Membre actif Avatar de netomin
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    81
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2005
    Messages : 81
    Par défaut
    Didonc avec toutes ces réponses cette discussion je pense merite bien dejà d'être close .

    On voit qu'on est de plus en plus nombreux c'est bien.

  9. #9
    Membre actif
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 26
    Par défaut
    Fermez pas tout de suite je teste les solutions une après l'autre !

    En fait j'ai essayé le "NumericUpandDown" qui est super pratique mais qui ne correspond pas esthetiquement au résultat escompté.

    Je vais essayer les autres soluces, notament celle de Hulk

    Je n'en suis pas encore à la soluce de la FAQ indiquée par abelman mais j'y viens doucement

  10. #10
    Membre actif Avatar de netomin
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    81
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2005
    Messages : 81
    Par défaut
    Quand je disais
    cette discussion merite d'être close
    Je rigolais et aussi j'ai parlé au sens figuré.
    C'est à toi de juger si tu met RESOLU à ta discussion, selons si ta trouvé ce que tu cherchais.

    à +

  11. #11
    Membre actif
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 26
    Par défaut
    Bein mon problème c'est que la solution de la FAQ fonctionne parfaitement,
    sauf 2 problèmes :

    ça ne prend en compte

    - ni le backspace (pour corriger un montant érronné)
    - ni le séparateur décimal (pour mettre une somme avec des centimes)

    Vous avez une soluce ?

    Voici mon code actuel
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
     
    Public Class fenetre
     
     
        Dim taux As Decimal = 6.55957
     
     
        Private Sub BoxSource_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles BoxSource.KeyPress
            If Not Char.IsDigit(e.KeyChar) Then
                'Tous les caractères non numériques ne sont pas traités sur le TextBox.  
                e.Handled = True
            End If
        End Sub
     
     
        Private Sub BoutonFRF_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BoutonFRF.Click
            BoxResultat.Text = taux * BoxSource.Text
        End Sub
     
     
        Private Sub BoutonEuros_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BoutonEuros.Click
            BoxResultat.Text = taux / BoxSource.Text
        End Sub
     
     
    End Class

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Diviser les valeurs d'un champ
    Par celine86 dans le forum Access
    Réponses: 7
    Dernier message: 14/02/2006, 09h58
  2. récupérer les valeur d'un champ FILE
    Par dj-julio dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 20/12/2005, 11h54
  3. Requete SELECT : prendre toutes les valeurs pour 1 champ
    Par fab22montpellier dans le forum Requêtes
    Réponses: 1
    Dernier message: 02/09/2005, 09h12
  4. Réinitialiser les valeurs d'un champ de type identify
    Par Oluha dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 19/01/2005, 13h39
  5. [VB.NET] Choisir les valeurs des items d'un combo box?
    Par Eithelgul dans le forum Windows Forms
    Réponses: 2
    Dernier message: 07/06/2004, 10h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo