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 :

Probleme ajouter avec combobox1 à 8 chiffre?


Sujet :

VB.NET

  1. #1
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2018
    Messages
    274
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2018
    Messages : 274
    Points : 237
    Points
    237
    Par défaut Probleme ajouter avec combobox1 à 8 chiffre?
    Bonjour,

    j'ai un petit souci avec un combobox1 pour entrer un adresse à 8 chiffre.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub ComboBox1_TextChanged(sender As System.Object, e As System.EventArgs) Handles ComboBox1.TextChanged
            If ComboBox1.Text.Length = 8 AndAlso Not ComboBox1.Items.Contains(ComboBox1.Text) Then
                ComboBox1.Items.Add(ComboBox1.Text)
            Else
                MsgBox("Veuillez entrer une adresse à 8 chiffre !", MsgBoxStyle.Exclamation, "Attention")
            End If
        End Sub

    mon problème quand je entrer la première chiffre. j'ai le msgbox qui m'affiche "Veuillez entrer un adresse ....etc".

    je voudrais ajouter dans combobox1 une adresse à 8 chiffre, on sinon si il y est inférieur à 8 chiffre message erreur et aussi éviter ajouter 2 fois la même adresse dans combobox1.

    Pouvez-vous m'aider à résoudre mon problème merci d'avance.

  2. #2
    Membre éprouvé Avatar de Momoth
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2013
    Messages
    318
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2013
    Messages : 318
    Points : 1 236
    Points
    1 236
    Par défaut
    Salut,

    C'est normal que le message s'affiche lors ce que tu saisie le premier charactère vu que du coup, tu en as moins de 8.

    Ta validation est bonne. Je pense que ton soucis c'est le type d'évènement que tu lève. Là tu es sur du TextChanged. Il va se déclencher à chaque changement dans la valeur de ton combobox.

    Dans ton cas, essaye plutôt de faire ta validation lors ce que tu sors du focus de ton champ. Ca t'évitera d'avoir l'erreur à chaque input.

    Momoth

    D'ailleurs, je me trompe peut être ca fait une éternité que j'ai pas fait de winform, mais les combobox, c'est pas des listes déroulantes ?

    C'est un champ autocomplète ou un truc du genre qui fait que tu passe par un combobox plutôt qu'un champ texte classique ?

    Momoth
    La Triforce du développement : Fainéantise, Curiosité et Imagination.

  3. #3
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2018
    Messages
    274
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2018
    Messages : 274
    Points : 237
    Points
    237
    Par défaut
    Bonjour Momoth, merci d'avoir répondu.

    j'ai refait mon code avec comme vous avez dit mais , j'ai un problème quand je sélection une adresse toujour msgbox : oups ! vous avez déla entrer ...etc!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Private Sub ComboBox1_Validated(sender As System.Object, e As System.EventArgs) Handles ComboBox1.Validated
            If Not String.IsNullOrEmpty(ComboBox1.Text) AndAlso ComboBox1.Text.Length >= 8 Then
                If Not ComboBox1.Items.Contains(ComboBox1.Text) Then
                    ComboBox1.Items.Add(ComboBox1.Text)
                Else
                    ComboBox1.Items.Remove(ComboBox1.Text)
                    MsgBox("Oups ! Vous avez déja enregistré cette adresse !", MsgBoxStyle.Exclamation, "Attention")
                End If
            Else
                ComboBox1.Items.Remove(ComboBox1.Text)
                MsgBox("Veuillez entrer une adresse à 8 chiffre !", MsgBoxStyle.Exclamation, "Attention")
            End If
        End Sub
    comment puis je faire cela pour éviter avoir 2 adresse identique en sélectionne une adresse? merci d'avance

  4. #4
    Membre éprouvé Avatar de Momoth
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2013
    Messages
    318
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2013
    Messages : 318
    Points : 1 236
    Points
    1 236
    Par défaut
    Je crois que je viens de comprendre ce que tu essais de faire (il m'aura fallu un peu de temps).

    Grosso modo, tu as une liste déroulante d'adresse, dans laquelle tu peux rajouter manuellement des éléments c'est bien ça ? Le problème qui va se poser, c'est que tu utilise le même control pour ajouter un nouvel élément dans ta liste (ton premier soucis) et sélectionner un élément dans cette liste (ton deuxième soucis). Du coup la validation est commune aux deux comportements et il faut faire une validation qui colle à tous tes cas d'utilisation.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    // Création ou sélection d'élément existant.
    If Not String.IsNullOrEmpty(ComboBox1.Text) AndAlso ComboBox1.Text.Length >= 8 Then
                // Si création.
                If Not ComboBox1.Items.Contains(ComboBox1.Text) Then
                    ComboBox1.Items.Add(ComboBox1.Text)
                End If
                // On fait rien de particulier en cas de séléction.
            Else
                ComboBox1.Items.Remove(ComboBox1.Text)
                MsgBox("Veuillez entrer une adresse à 8 chiffre !", MsgBoxStyle.Exclamation, "Attention")
            End If
    Si tu fais quelque chose comme ça, tu pourra éviter les doublons lors de la création mais tu n'aura pas d'erreur pour te le notifier. Si tu veux pouvoir gérer ça, il te faudrait un paramètre qui indique l'action souhaitée (contexte de création ou de sélection). Là actuellement on peut déduire le contexte de création d'un élément non existant, mais il me parait compliquer de déduire si on est sur une création de doublon ou sur la sélection d'un élément existant.

    Pour aller plus loin, je pense qu'il faudrait avoir d'autres controls intermédiaires (genre un bouton + pour déclencher la création, ce genre de truc).

    Momoth
    La Triforce du développement : Fainéantise, Curiosité et Imagination.

  5. #5
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2018
    Messages
    274
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2018
    Messages : 274
    Points : 237
    Points
    237
    Par défaut
    pour l'instant ça fonctionne très bien. pour éviter les doublons je vais utiliser ComboBox1_KeyDown.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub ComboBox1_KeyDown(sender As System.Object, e As System.Windows.Forms.KeyEventArgs) Handles ComboBox1.KeyDown
            If e.KeyCode = Keys.Delete Then
                If ComboBox1.Items.Contains(Me.ComboBox1.Text) Then
                    ComboBox1.Items.Remove(Me.ComboBox1.Text)
                End If
            ElseIf e.KeyCode = Keys.Enter AndAlso Not ComboBox1.Items.Contains(ComboBox1.Text) Then
                ComboBox1.Items.Add(Me.ComboBox1.Text)
            End If
        End Sub

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

Discussions similaires

  1. [Smarty] probleme d'ajout avec samrty
    Par medalaoui dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 03/12/2013, 21h20
  2. Probleme ajout blanc avec instruction Put !
    Par pierre24 dans le forum SAS Base
    Réponses: 2
    Dernier message: 20/03/2008, 13h37
  3. Probleme avec alignement de chiffres réels :(
    Par softstar dans le forum Delphi
    Réponses: 52
    Dernier message: 09/09/2006, 00h12
  4. probleme sql avec delphi
    Par lil_jam63 dans le forum Bases de données
    Réponses: 7
    Dernier message: 25/02/2004, 04h32
  5. probleme GRAVE avec directx 9
    Par l'arbre en plastique dans le forum DirectX
    Réponses: 3
    Dernier message: 02/09/2003, 23h59

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