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 :

Remplisage d'une ComboBox


Sujet :

Windows Forms

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    923
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2008
    Messages : 923
    Points : 760
    Points
    760
    Par défaut Remplisage d'une ComboBox
    Bonjour à tous,

    voilà une question simple qui je n'arrive pas à le faire, est-ce que quelque bonne alme peut m'aider, svp?

    J'ai besoin de remplir une ComboBox avec des mois de l'année (Janvier, Février, ...) et qu'ils ayent les valeurs (1, 2, ...)

    J'ai déjà essayé par array:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim arrMois(11,1) as String
    arrMois(0,0)="Janvier"
    arrMois(0,1)=1
    Avec deux arrays:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim arrMois(11) as String
    Dim arrId(11) as Integer
    arrMois(0)="Janvier"
    arrId(0)=1
    par DataTable:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim dtMois As New DataTable
    dtMois.Columns.Add("Mois")
    dtMois.Columns.Add("Value")
    dtMois.Rows.Add("Janvier", 1)
    dtMois.Rows.Add("Février", 2)
    Mais je n'arrive pas à faire le Binding...


    Est-ce que quelqu'un peut m'aider, svp?
    Merci d'avance...

  2. #2
    Membre régulier
    Inscrit en
    Avril 2008
    Messages
    151
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 151
    Points : 123
    Points
    123
    Par défaut
    Il me semble que tu ne peux pas mettre deux valeurs distinctes sur la même ligne.
    Le mieux est de créer ta ligne en entier, et lorque tu cherches quelque chose en particulier de prendre cette ligne et de rechercher dans cette ligne la valeur que souhaite annalyser
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ComboBox1.Items().Add("Fevrier" & " " & "1")
    Sinon, ce que je te propose c'est que si tu cherches le mois de janvier avec la valeur 1, dans ta combobox tu n'as cas récupérer l'index de l'item de janvier qui sera placé en premier dans ta combobox.

    (Indexcb= 1) Janvier 1
    (Indexcb= 2) Fevrier 2
    (Indexcb= 3) Mars 3
    ...

    C'est un sytem D...
    Attends de voir si il y a vraiment une possiblité de rajouter deux valeurs sur la même ligne dans un combobox...

  3. #3
    Membre à l'essai
    Inscrit en
    Janvier 2010
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 14
    Points : 17
    Points
    17
    Par défaut Binding
    Bonjour,
    Je te propose la démarche suivante pour réaliser un beau binding de ta combo

    1. crée une classe spécifique pour tes mois de l'année

    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
    27
    28
    29
     
    Public Class MoisAnnee
        Private _moisString As String
        Private _moisInteger As Integer
     
        Property MoisString() As String
            Get
                Return _moisString
            End Get
            Set(ByVal value As String)
                _moisString = value
            End Set
        End Property
     
        Property MoisInteger() As Integer
            Get
                Return _moisInteger
            End Get
            Set(ByVal value As Integer)
                _moisInteger = value
            End Set
        End Property
     
        Public Sub New(ByVal i As Integer, ByVal s As String)
            _moisString = s
            _moisInteger = i
        End Sub
     
    End Class
    Puis tu initialise une liste d'objets moisAnnee (dans le load de la form par exemple) que tu lies (Binding...) à ton contrôle

    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 Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            Dim listeMoisAnnee As New List(Of MoisAnnee)
            listeMoisAnnee.Add(New MoisAnnee(1, "janvier"))
            listeMoisAnnee.Add(New MoisAnnee(2, "fevrier"))
            listeMoisAnnee.Add(New MoisAnnee(3, "mars"))
            listeMoisAnnee.Add(New MoisAnnee(4, "avril"))
     
            'Initialisation du binding du contrôle
            Me.ComboBox1.DataSource = listeMoisAnnee
            Me.ComboBox1.DisplayMember = "MoisString"
            Me.ComboBox1.ValueMember = "MoisInteger"
    End Sub
    Et tu termines par récupérer la valeur lorsque la séléction change dans la combobox

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Private Sub ComboBox1_SelectionChangeCommitted(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectionChangeCommitted
            Dim i As Integer = ComboBox1.SelectedValue
    End Sub

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    923
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2008
    Messages : 923
    Points : 760
    Points
    760
    Par défaut
    Merci leeloo95.

    En fait, c'est pas mettre les deux valeurs dans la même ligne, mais utiliser les proprietes ValueMember et DisplayMember.

    Je voudrais que "Janvier" soit le DisplayMember avec un ValueMember 1
    "Février" de DisplayMember avec un ValueMember 2...

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    923
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2008
    Messages : 923
    Points : 760
    Points
    760
    Par défaut
    Merci à toi aussi BoBoCom1.

    C'est bien ça...
    Mais c'est pas evident. J'ai pensé qu'il serait beaucoup plus simple...

  6. #6
    Membre à l'essai
    Inscrit en
    Janvier 2010
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 14
    Points : 17
    Points
    17
    Par défaut IList ...
    Bonjour Marc27,

    C'est vrai que ce n'est pas forcément le plus simple, ou le plus direct.

    Néanmoins la combobox n'autorise que le binding avec des composants qui implémentent l'interface 'IList'....tu es donc limité dans le choix de la collection utilisable.
    D'autre part l'emploi de l'objet "MoisAnnee" est un choix de développement...tu peux surement faire plus simple
    A plus

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    923
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2008
    Messages : 923
    Points : 760
    Points
    760
    Par défaut
    Alors,
    on y va. Je vais donc l'essayer

    Merci encore une fois BoBoCom1 et leeloo95.

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

Discussions similaires

  1. Multi-selection dans une ComboBox ?
    Par Moloko dans le forum MFC
    Réponses: 5
    Dernier message: 07/07/2021, 17h26
  2. [Débutant] Problème de remplisage d'une combobox
    Par Marc_27 dans le forum Windows Forms
    Réponses: 0
    Dernier message: 17/03/2009, 09h52
  3. [VB6] largeur d'une zone de liste d'une combobox
    Par Nick13 dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 28/08/2004, 12h30
  4. Réponses: 2
    Dernier message: 26/07/2004, 13h34
  5. Pré-sélectionner un élément d'une combobox
    Par delphim dans le forum Composants VCL
    Réponses: 4
    Dernier message: 17/06/2003, 15h26

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