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 :

les collections


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Novembre 2009
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 31
    Par défaut les collections
    Bonjour

    Je voudrais charger une listbox1 par des données puis les stockers dans une collection listof(T) puis les affichers dans une autre listbox2
    Voila mon code ( les textboxes c'est juste pour la recherche)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     Dim a As Rayons
        Dim ray As New List(Of Rayons)
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            a = New Rayons(Listbox1.text, TextBox2.Text, TextBox1.Text)
           ray.add(a)
     end sub
    2:affichage dans une listbox2 aprés avoir fait recherche

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    For Each a1 In ray
                If a1.Inti = TextBox4.Text Then
                    TextBox5.Text = a1.Max
                           For Each a2 in listbox2.items
                       listbox2.item.add(a1.livre)
                 Next
     
              End If
         Next
    quand je veux afficher dans la listbox2 il n'ya rein qui s'affiche
    Voila j'èspere que vous pourrez m'aider.

    Merci.

  2. #2
    Membre émérite Avatar de methylene
    Profil pro
    Inscrit en
    Février 2010
    Messages
    659
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2010
    Messages : 659
    Par défaut
    Bonjour,

    Déjà, où fais-tu la séparation entre tes éléments "a" de ta list "ray", en "a1" et "a2".

    Soit il manque une partie du code soit je ne comprend pas. Ce que je comprend bien c'est que les a1 sont les éléments affichés dans listbox1, et les a2 dans listbox2, mais ton code ne génère rien de la sorte.

    Egalement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If a1.Inti = TextBox4.Text Then
    C'est quoi Inti ?

  3. #3
    Membre chevronné
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    319
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 319
    Par défaut
    Bonjour

    Euh ton code est plein d'incohérence...

    Je ne suis même pas sur de comprendre la deuxième boucle de remplissage!

    Et si tu veux recopier ta listbox1 dans ta listbox2 tu peux très bien faire
    Et je ne crois pas qu'il soit possible d'ecrire listbox.Text. La bonne ecriture serai plutot listbox.SelectedItem

    En esperant que ca t'aidera un peu

    Nasty

  4. #4
    Membre averti
    Inscrit en
    Novembre 2009
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 31
    Par défaut
    Citation Envoyé par methylene Voir le message
    Bonjour,

    Déjà, où fais-tu la séparation entre tes éléments "a" de ta list "ray", en "a1" et "a2".

    Soit il manque une partie du code soit je ne comprend pas. Ce que je comprend bien c'est que les a1 sont les éléments affichés dans listbox1, et les a2 dans listbox2, mais ton code ne génère rien de la sorte.

    Egalement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If a1.Inti = TextBox4.Text Then
    C'est quoi Inti ?
    Salut merci pour ta reponce je t'explique le probleme

    un rayon ce compose de plusieurs livre chaque rayon est caractérise par son intituler qui est "Inti" est aussi par le nombre maximal des livre qui est "max" (c'est pas important) j'ajoute dans la listbox1 des livres
    Aprés je fais une recherche via "Inti"qui est l'intitule le textbox4 et textbox5 affichent ce que j'ai saisie par contre la listbox2 est vide , je voudrais savoir pourquoi elle est vide
    J'ai mis l'image du programme pour mieux comprendre


    Uploaded with ImageShack.us

  5. #5
    Membre expérimenté
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Sarthe (Pays de la Loire)

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

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Par défaut
    Première chose, donne des noms concrets à tes variables. Avec les Inti, a1, a2, ... ton code est incompréhensible. Et ça t'évitera bien des problèmes en général

    Ensuite travailles avec des objets pour avoir quelque chose de plus logique à manipuler. Tu as donc une classe Rayon qui possède une liste de Livre. Tout le code sera en C#, mais c'est facilement traduisible je pense.

    Donc en très gros
    Code C# : 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
    public class Rayon
    {
        private string _nom;
        private int _maxLivres;
        private IList<Livre> _livres = new BindingList<Livre>();
     
        public string Nom { get { ... } set { ... } }
        public int MaxLivres { get { ... } set { ... } }
        public IList<Livre> Livres { get { ... } }
    }
     
    public class Livre
    {
        private string _titre;  
     
        public string Titre { get { ... } set { ... } }
    }
    A partir de là avec un peu de DataBinding tu auras quelque chose de bien plus simple. Si tu ne sais pas ce qu'est le DataBinding, cherche un peu

    On va faire avec une version simple pour commencer en douceur. On verra avec des BindingSource plus tard peut être

    Déjà tu as une liste de rayons
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    private List<Rayon> _rayons = new List<Rayon>();
    Tu dois toujours avoir un objet Rayon prêt pour la saisie.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    private Rayon _rayon = new Rayon();
    Au fur et à mesure que tu remplis les infos tu mets à jour l'objet
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    _rayon.Nom = "Mon rayon";
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    _rayon.MaxLivres = 50;
    Et pour les livres, il suffit des les ajouter à la liste des livres du rayon concerné
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    _rayon.Livres.Add(monLivre);
    Pour l'affichage, il faut juste associer une source de données à la liste.
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    lbLivres.DataSource = _rayon.Livres;
    // On indique comment afficher l'information
    lbLivres.DisplayMember = "Nom";
    Et lorsque tu ajoutes le rayon
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    _rayons.Add(_rayon);
    // On part sur un nouveau rayon ensuite
    _rayon = new Rayon();
    // On réinitialise la DataSource de la ListBox pour pointer sur le prochain rayon
    lbLivres.DataSource = _rayon.Livres;

    Voilà pour le principe dans les grandes lignes. Il faut modéliser ton système pour faire ressortir les objets qui interviennent et ensuite les manipuler. Au final l'ensemble devient plus logique. Mais pas forcément lorsque l'on débute et que la POO n'est qu'un vague concept dont on se passe facilement

    Après pour l'écran, je ne pense pas que ce soit le plus adapté dans la façon de saisir l'information. Mais c'est un autre sujet ^^

  6. #6
    Membre averti
    Inscrit en
    Novembre 2009
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 31
    Par défaut
    Merci beaucoup StormimOn, le problème c'est juste dans l'affichage qui doit se faire normalement dans la listbox2 peux-tu expliquer en VB.net si possible merci encore une fois StormimOn

    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    lbLivres.DataSource = _rayon.Livres;
    // On indique comment afficher l'information
    lbLivres.DisplayMember = "Nom";

  7. #7
    Membre expérimenté
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Sarthe (Pays de la Loire)

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

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Par défaut
    Ce n'est pas Nom mais Titre, je me suis trompé dans le nom de la propriété ^^
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    lbLivres.DisplayMember = "Titre"
    Devrait mieux fonctionner.

    Sinon la prochaine fois évite de citer un message entier lorsque celui-ci est long, ça pollue plus qu'autre chose. Ne garde que les parties que tu veux citer

  8. #8
    Membre averti
    Inscrit en
    Novembre 2009
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 31
    Par défaut
    Citation Envoyé par methylene Voir le message
    Bonjour,

    Déjà, où fais-tu la séparation entre tes éléments "a" de ta list "ray", en "a1" et "a2".

    Soit il manque une partie du code soit je ne comprend pas. Ce que je comprend bien c'est que les a1 sont les éléments affichés dans listbox1, et les a2 dans listbox2, mais ton code ne génère rien de la sorte.

    Egalement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If a1.Inti = TextBox4.Text Then
    C'est quoi Inti ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If a1.Inti = TextBox4.Text Then
    veut dire que:
    Si j'entre l'intitule "inti" dans le Textbox4.text et je clique le button ("rechercher") les données du rayon vont apparaitre dans le Textbox5.text qui affichera le max de livres saisies "max" mais la listbox2 n'affiche pas les livres que j'ai saisie dans (listbox1) par contre textbox5 affiche ce que j'ai saisie ( textbox2) et le tous est ajoute dans une collection list (of ray) .

    Ps: Je clique sur le button rechercher et je saisie juste l'intitule puis le textbox5.text se met a jour sauf la listbox2 je veux savoir pourquoi

Discussions similaires

  1. pb avec struts et les collections
    Par zola dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 06/04/2006, 10h53
  2. [10] forall et les collection de record
    Par noinneh dans le forum Oracle
    Réponses: 3
    Dernier message: 13/02/2006, 13h49
  3. C++ - les collections
    Par Spir dans le forum C++
    Réponses: 14
    Dernier message: 18/06/2005, 20h09
  4. [VB.NET] Utiliser les collections de contrôles (Textbox)
    Par dinbougre dans le forum Windows Forms
    Réponses: 3
    Dernier message: 09/01/2005, 18h57

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