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] ComboBox et DataSource


Sujet :

Windows Forms

  1. #1
    Membre régulier
    Inscrit en
    Janvier 2006
    Messages
    111
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 111
    Points : 89
    Points
    89
    Par défaut [VB.Net] ComboBox et DataSource
    bonjour à tous,

    J'ai lié un ComboBox à un arrayList avec .datasource comme suit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Public fPedigreeByNom As New ArrayList
    ComboBoxNomCheval.DataSource = fPedigreeByNom
    dans la procédure lorsque l'on ajoute un item, je mets à jour le arrayList:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    fPedigreeByNom.Add(tmp.nom)
    pour mettre à jour la combo, je suis obligé de faire précéder:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    [1]ComboBoxNomCheval.DataSource = fPedigreeByNom
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    [2]ComboBoxNomCheval.DataSource = nothing
    pour que cela fonctionne !

    Si je ne fais pas preceder l'instruction [1] par l'affectation de nothing [2], le combo ne reflete pas l'arraylist, savez-vous pourquoi ?

    Mon code fonctionne mais j'aimerai comprendre !

  2. #2
    Membre chevronné
    Avatar de Piotrek
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 869
    Points : 1 904
    Points
    1 904
    Par défaut
    Salut

    Le binding n'est pas automatiquement bi-directionnel. Le controle peut mettre a jour la source de donnees sans problemes, en revanche, la notification du changement de la source de donnees doit etre declanchee au niveau de celle-ci. Or pour un arraylist contenant des chaines, ce n'est pas le cas.

    Les sources de donnees capables den notifier de changement d'etat sont:
    - Les collections capables de notification, ex celles implementant IBindingList (a condition qu'elles declanchent l'evenement ListChanged)
    - Les objets (toi tu utilise une simple string) emettant un evenement xxx_Changed (ou xxx est le nom de la propriete) des que une propriete est modifiee (a mettre dans tous les Set de toutes les proprietes donc). Ces objets peuvent etre contenus dans une collection ou bindes directement

    NB: normalement un simple refresh de ta combo devrait suffire

  3. #3
    Membre régulier
    Inscrit en
    Janvier 2006
    Messages
    111
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 111
    Points : 89
    Points
    89
    Par défaut
    Mes remerciements (un peu tardifs) pour ta réponse.

    quelques congés et je reviens sur mon projet...

    Merci

    Pascal

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 21/10/2009, 17h39
  2. Réponses: 5
    Dernier message: 29/11/2006, 21h10
  3. [VB.NET] Combobox, Datasource et durée d'execution
    Par lacsap49 dans le forum Windows Forms
    Réponses: 1
    Dernier message: 19/05/2006, 16h06
  4. [VB.NET] ComboBox/Datagrid enabled mais pas en saisie
    Par Cereal123 dans le forum Windows Forms
    Réponses: 6
    Dernier message: 10/09/2004, 14h11
  5. [VB.NET] ComboBox lien entre deux tables
    Par VDB1 dans le forum Windows Forms
    Réponses: 3
    Dernier message: 15/07/2004, 12h15

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