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 :

deux combobox reliés


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2012
    Messages : 48
    Par défaut deux combobox reliés
    Bonjour,j'ai un problème de combobox. J'ai réussi à lier deux combobox entre-elles, la première permet de selectionner une région et la deuxième donne les villes correspondantes et permet alors de les selectionner. Le problème est que si la personne se trompe dans le choix de la région et veut donc modifier son choix, lorsqu'on veut utiliser la seconde combobox, les villes corespondantes à la bonne région s'affichent mais également celle de la fausse.
    (par exemple, elle choisit Aquitaine au lieu d'Alsace, elle va dans la seconde combobox, les villes correspondant à l'Aquitaine s'affichent. Mais elle se rend compte de son erreur, donc elle modifie et met Alsace. A ce moment là lorsqu'on utilise la 2ème combobox, les villes correspondants à l'alsace mais également à l'aquitaine s'affichent)

    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
     Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            ComboBox1.Items.Add("Alsace")
            ComboBox1.Items.Add("Aquitaine")
     
        End Sub
     
        Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged
     
            If ComboBox1.Text = "Alsace" Then
                ComboBox2.Items.Add("Mulhouse")
                ComboBox2.Items.Add("Strasbourg")
            End If
     
            If ComboBox1.Text = "Aquitaine" Then
                ComboBox2.Items.Add("Agen")
                ComboBox2.Items.Add("Bordeaux")
            End If
        End Sub

  2. #2
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 200
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 200
    Par défaut
    ComboBox2.Items.Clear au début de la sub qui handles cmb1.SelectionChanged

    il faut nommer les controles (et les variables en général) avec un nom explicite, et pour les controles il est conseillé d'avoir un préfixe pour le type
    => CmbRegion et CmbVille par exemple

    dans ton cas il ne faut pas faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if condition then 
    end if
    if condition then 
    end if
    mais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    select case ComboBox1.Text
      case "Alsace"
        '
      case "Aquitaine"
        '
    end select
    car si la 1ère condition testée est vraie les autres seront fausses, donc ca perd du temps de les tester toutes
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  3. #3
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Bah c'est normal, tu ajoutes des éléments à la ComboBox mais tu n'enlèves pas ceux qui étaient déjà présents... il faut faire un ComboBox2.Items.Clear() avant d'ajouter les nouveaux items.

    Et au passage : par pitié, donne des vrais noms à tes contrôles ! Ca prend 2 secondes de renommer ComboBox1 en ComboBoxRegions et ComboBox2 en ComboBoxVilles si tu le fais tout de suite, et ça rend le code beaucoup plus lisible. Quand tu as 2 ou 3 contrôles, ça va encore, mais quand tu en as 50, comment tu fais pour te rappeler à quoi correspond TextBox42 ou ComboBox37 ?

  4. #4
    Membre averti
    Homme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2012
    Messages : 48
    Par défaut
    merci, ca fonctionne et oui jvais essayer de faire des efforts pour mes controles!!

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

Discussions similaires

  1. [Developpement] : FieldType avec deux combobox
    Par loueti dans le forum SharePoint
    Réponses: 0
    Dernier message: 02/06/2008, 16h03
  2. Combobox reliée à un bouton
    Par Fabthebug dans le forum Tkinter
    Réponses: 2
    Dernier message: 25/11/2007, 17h22
  3. Compiler informations de deux combobox dans une textbox
    Par thiephaine59000 dans le forum Général VBA
    Réponses: 1
    Dernier message: 14/05/2007, 17h58
  4. Sychroniser deux comboBox
    Par PhiberOptik dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 26/06/2006, 22h56
  5. [VB.NET] combobox reliée à une DB
    Par olbi dans le forum Windows Forms
    Réponses: 1
    Dernier message: 30/05/2006, 09h04

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