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

C# Discussion :

Sélection d'un item d'un listbox via une valeur


Sujet :

C#

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France, Essonne (Île de France)

    Informations forums :
    Inscription : Octobre 2006
    Messages : 34
    Points : 21
    Points
    21
    Par défaut Sélection d'un item d'un listbox via une valeur
    Bonjour,
    Dans ma form j'ai une listbox qui affiche le résultat d'une base Access. D'un côté j'affiche les noms et de l'autre une valeur cachée qui correspond à l'ID du nom. Voici comment je prossède.

    J'ai créé une classe pour la gestion des items :
    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
    public class ListBoxItem
    {
    	public ListBoxItem(string MonText, int MaValeur)
    	{
    		m_MonText = MonText;
    		m_MaValeur = MaValeur;
    	}
     
    	private string m_MonText;
    	private int m_MaValeur;
     
    	public string Text
    	{
    		get { return m_MonText; }
    	}
     
    	public int Value
    	{
    		get { return m_MaValeur; }
    	}
    }
    J'ajoute les noms et les valeurs dans la listbox :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    listBox.DisplayMember = "Text";
     
    // connexion à la base Access.......
     
    while (bdd.rdb.Read())
    {
        listBox.Items.Add(new ListBoxItem(bdd.rdb.GetString(1), bdd.rdb.GetInt32(0)));
    }

    Pour récupérer la valeur d'un item sélectionné de la listbox j'utilise ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    ListBoxItem item = (ListBoxItem)listBox.SelectedItem;
    MessageBox.Show("Sélection : " + item.Text + " / " + item.Value.ToString());
    Mon problème est le suivant :

    J'ai une deuxième form qui est un moteur de recherche. Lorsque je lance la recherche dans mon fichier Access, je récupère l'ID du nom recherché et je voudrais sélectionné l'item dans la listbox par rapport à l'ID du fichier Access mais je ne sais pas comment faire ???
    Merci

  2. #2
    Membre averti
    Avatar de SoBaKa
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2006
    Messages
    242
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2006
    Messages : 242
    Points : 349
    Points
    349
    Par défaut
    De mémoire dans listBox il y a une propriété Items qui te permet de retrouver un items par valeur et qui te renvoies donc un item qui lui même a une propriété selected.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ListBox.Items.FindByValue("la_valeur").selected = true

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France, Essonne (Île de France)

    Informations forums :
    Inscription : Octobre 2006
    Messages : 34
    Points : 21
    Points
    21
    Par défaut
    Non, je ne trouve pas cette propriété

  4. #4
    Membre averti
    Avatar de SoBaKa
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2006
    Messages
    242
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2006
    Messages : 242
    Points : 349
    Points
    349
    Par défaut
    Quelle version du framework utilises tu?

    je suis au boulot et je viens de voir que dans la version 1.1 il n'y avait pas la méthode FindByValue().

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France, Essonne (Île de France)

    Informations forums :
    Inscription : Octobre 2006
    Messages : 34
    Points : 21
    Points
    21
    Par défaut
    J'utilise Visual C# Express 2005 donc la version 2

  6. #6
    Membre expérimenté Avatar de bossun
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    1 359
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2002
    Messages : 1 359
    Points : 1 443
    Points
    1 443
    Par défaut
    un foreach ou une boucle qui parcourt tout les elements n'irait pas??



    La methode FindByValue n'existe que pour le Web.

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France, Essonne (Île de France)

    Informations forums :
    Inscription : Octobre 2006
    Messages : 34
    Points : 21
    Points
    21
    Par défaut
    J'ai déjà testé un for en parcourant tous les items (SelectedIndex) mais sa ne fait pas très beau car on voie la liste défiller.

  8. #8
    Membre expérimenté Avatar de bossun
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    1 359
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2002
    Messages : 1 359
    Points : 1 443
    Points
    1 443
    Par défaut
    tu fais un truc du genre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for( int i =0;i<=combobox.Items.Count;i++)
    {
    If(combobox.items[i].ToString()==Valeur)
    }

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France, Essonne (Île de France)

    Informations forums :
    Inscription : Octobre 2006
    Messages : 34
    Points : 21
    Points
    21
    Par défaut
    Dans le code que tu propose en fin de compte je récupère le nom de l'item mais pas la valeur cachée ??

  10. #10
    Membre averti
    Avatar de SoBaKa
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2006
    Messages
    242
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2006
    Messages : 242
    Points : 349
    Points
    349
    Par défaut
    ah oue FindByValue c'est pour le web désolé...

    sinon, il y a ne méthode que je trouve plus propre qu'une boucle directement au niveau de l'UI... (même si dans ce cas j'aurais plutôt tendance à utiliser la boucle pour pas me prendre la tête)...

    Tu as déjà créer ta classe pour ton databinding ce qui est bien, il faudrait aussi créer une collection qui hériterais de CollectionBase (ou autre base qui pourrait peut etre être mieux) et tu te crées toi même cette méthode FindByValue qui te retournes l'objet ListBoxItem... et après tu n'auras plus qu'a faire ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ListBox.setSelected ( taCollection.FindByValue(tonId) );

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France, Essonne (Île de France)

    Informations forums :
    Inscription : Octobre 2006
    Messages : 34
    Points : 21
    Points
    21
    Par défaut
    Ha génial j'ai trouvé, je met la réponse pour finir correctement

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    for(int i=0; i < ListBox.Items.Count; i++)
    {
        ListBoxItem idn = (ListBoxItem)ListBox.Items[i];
        if (MaValeur == idn.Value)
            ListBox.SelectedIndex = i;
    }
    Merci pour votre aide car c'est grace à ses quelques petites astuces que j'ai pu trouver

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

Discussions similaires

  1. [AC-2007] Alimenter un MS Form 2 listbox via une Requête
    Par lakhdar16 dans le forum VBA Access
    Réponses: 3
    Dernier message: 20/06/2012, 12h33
  2. [Débutant] Remplissage d'une listbox via une requete SQL
    Par arngrimur dans le forum ASP.NET
    Réponses: 9
    Dernier message: 26/09/2011, 11h31
  3. [XL-2003] Sélection d'un item dans un ListBox
    Par peponne31 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 29/09/2009, 14h47
  4. Comment remplir une listBox via une collection
    Par loic20h28 dans le forum Windows Forms
    Réponses: 8
    Dernier message: 20/11/2008, 14h49
  5. comment charger une listbox via une requete access
    Par sanfour_walhan dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 27/12/2006, 07h44

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