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

VB.NET Discussion :

Problème de contrainte d'un TextBox


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2011
    Messages : 81
    Par défaut Problème de contrainte d'un TextBox
    Bonjour à tous et à toutes,


    J'ai un problème avec la contrainte d'un TextBox, je veux qu'il soit numérique, et inférieur à 60 et supérieur à 0, mais le soucis, c'est que lorsque l'on tape un chiffre supérieur ou égale à 100 (maxlenght = 3 ou sup), mon message d'erreur n'est pas affiché, est le TextBox est validé.

    Le code est :

    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
    Private Sub TextBox_Validated(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox.Validated
     
            If Not IsNumeric(TextBox.Text) Or TextBox.Text = "0" Or TextBox.Text > "60" Then
                TextBox.BackColor = Color.Red
                MessageBox.Show("Veuillez vérifier la valeur !" & System.Environment.NewLine & "Valeur Numérique obligatoire et différente de ""0"" et inférieur à ""60 mm"" !", _
                           "Erreur de saisie", MessageBoxButtons.OK, MessageBoxIcon.Error)
                TextBox.Text = "0"
                TextBox.Select()
                Exit Sub
            Else
                TextBox.BackColor = Color.LightGreen
                VariableTextBox = CSng(TextBox.Text)
                TamponTextBox = TextBox.Text
            End If
     
     
        End Sub

    J'ai essayé de le restreindre avec la Longueur Max du TextBox, mais dans ce cas la plus rien ne marche ...

    Voici le code testé :

    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
    Private Sub TextBox_Validated(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox.Validated
     
            If Not IsNumeric(TextBox.Text) Or TextBox.Text = "0" Or TextBox.Text > "60" Or TextBox.MaxLenght > 2 Then
                TextBox.BackColor = Color.Red
                MessageBox.Show("Veuillez vérifier la valeur!" & System.Environment.NewLine & "Valeur Numérique obligatoire et différente de ""0"" et inférieur à ""60 mm"" !", _
                           "Erreur de saisie", MessageBoxButtons.OK, MessageBoxIcon.Error)
                TextBox.Text = "0"
                TextBox.Select()
                Exit Sub
            Else
                TextBox.BackColor = Color.LightGreen
                VariableTextBox = CSng(TextBox.Text)
                TamponTextBox = TextBox.Text
            End If
     
     
        End Sub
    J'ai aussi essayé de créer un intervalle, mais là, tout est accepté...



    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
    Private Sub TextBox_Validated(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox.Validated
     
            If Not IsNumeric(TextBox.Text) Or TextBox.Text = "0" Or TextBox.Text > "60" And TextBox.Text < "1000000000" Then
                TextBox.BackColor = Color.Red
                MessageBox.Show("Veuillez vérifier la valeur!" & System.Environment.NewLine & "Valeur Numérique obligatoire et différente de ""0"" et inférieur à ""60 mm"" !", _
                           "Erreur de saisie", MessageBoxButtons.OK, MessageBoxIcon.Error)
                TextBox.Text = "0"
                TextBox.Select()
                Exit Sub
            Else
                TextBox.BackColor = Color.LightGreen
                VariableTextBox = CSng(TextBox.Text)
                TamponTextBox = TextBox.Text
            End If
     
     
        End Sub

    Je n'arrive pas a trouver l'erreur qui fait que ça ne marche pas...

    J'avais le même soucis sur un autre TextBox, il devais être supérieur ou égal à 10, et j'ai pu le résoudre de cette façon :

    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
     Private Sub TextBox2_Validated(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox2.Validated
     
            If TextBox2.Text = "0" Or TextBox2.Text = "1" Or TextBox2.Text = "2" Or TextBox2.Text = "3" Or TextBox2.Text = "4" _
                Or TextBox2.Text = "5" Or TextBox2.Text = "6" Or TextBox2= "7" Or TextBox2.Text = "9" _
                Or TextBox2.Text = "9" Or Not IsNumeric(TextBox2.Text) Then
                TextBox2.BackColor = Color.Red
                MessageBox.Show("Veuillez vérifier ""Epmin"" !" & System.Environment.NewLine & "Valeur Numérique obligatoire et supérieur à ""10 mm"" !", _
                           "Erreur de saisie", MessageBoxButtons.OK, MessageBoxIcon.Error)
                TextBox2.Text = "10"
                TextBox2.Select()
                Exit Sub
            Else
                TextBox2.BackColor = Color.LightGreen
                VariableTextBox2 = CSng(TextBox2.Text)
            End If
     
     
            If TextBox2.Text = "0" Then
                TextBox2.BackColor = Color.Orange
            End If
            TamponTextBox2 = TextBox2.Text
    J'ai du rentrer toutes les valeurs qui cause l'erreur. Il n'y a pas de moyens plus rapides ?


    Cordialement,
    Bacube

  2. #2
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2011
    Messages
    193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Bénin

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2011
    Messages : 193
    Par défaut
    Salut,
    Et si tu essaies avec le Keydown ou le lostfocus du textbox? je crois ça marchera et tu auras ton message de limit sans soucis

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2011
    Messages : 81
    Par défaut
    Non, rien n'y fait, dès que c'est compris en 61 et 99 le message s'affiche, mais au dessus ou égal à 100, le TextBox est validé, donc pas de message. Ce que je ne comprend pas c'est que > 60 dans le code veux bien dire que 100 l'est aussi, ou y a t'il une subtilité pour résoudre ce problème ?

  4. #4
    Membre éclairé Avatar de hugoclo
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    615
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 615
    Par défaut
    Et sans les "" autour des chiffres?

  5. #5
    Membre Expert
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 793
    Par défaut
    Le problème vient surement de là, tu compares des chaines, pas des nombres.
    Pour comparer fait un integer.parse ou double.parse

  6. #6
    Membre expérimenté
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Par défaut
    Pourquoi ne pas simplement utiliser un contrôle de type NumericUpDown au lieu de réinventer la roue ?

  7. #7
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2011
    Messages : 81
    Par défaut
    Merci, c'est bon ça marche, je pense que le fait de comparer des string et non des Double, faisait que ça n'allait pas.

    Voici le code final qui marche pour ceux qui seraient confronté au même problème.

    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
    Private Sub TextBox_Validated(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox.Validated
     
            If Not IsNumeric(TextBox.Text) Or CDbl(TextBox.Text) = 0 Or CDbl(TextBox.Text)  > 60 Then
                TextBox.BackColor = Color.Red
                MessageBox.Show("Veuillez vérifier la valeur !" & System.Environment.NewLine & "Valeur Numérique obligatoire et différente de ""0"" et inférieur à ""60 mm"" !", _
                           "Erreur de saisie", MessageBoxButtons.OK, MessageBoxIcon.Error)
                TextBox.Text = "0"
                TextBox.Select()
                Exit Sub
            Else
                TextBox.BackColor = Color.LightGreen
                VariableTextBox = CSng(TextBox.Text)
                TamponTextBox = TextBox.Text
            End If
     
     
        End Sub
    Merci pour l'aide

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

Discussions similaires

  1. Problème d'affichage dans les textbox
    Par popinenhbourg dans le forum Servlets/JSP
    Réponses: 8
    Dernier message: 28/02/2006, 12h09
  2. Problème d'affichage dans les textbox
    Par popinenhbourg dans le forum Balisage (X)HTML et validation W3C
    Réponses: 7
    Dernier message: 28/02/2006, 11h36
  3. [VB]Problème d'effacement dans une TextBox
    Par bb62 dans le forum VB 6 et antérieur
    Réponses: 16
    Dernier message: 24/01/2006, 17h55
  4. Réponses: 5
    Dernier message: 26/10/2005, 14h43
  5. Problème de contrainte dans un "CREATE DOMAIN ..."
    Par VenusX117 dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 15/02/2005, 18h06

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