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 :

Ajout dans un ListView


Sujet :

Windows Forms

  1. #1
    Membre régulier
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Août 2007
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Août 2007
    Messages : 128
    Points : 90
    Points
    90
    Par défaut Ajout dans un ListView
    Chers Internotes,
    J'ai un probleme d'ajout d'element dans un ListView. En fait j ai un TreeView avec des Noeuds et quand je cliques sur un noeuds je devrais pouvoir ajouter les elements appartenant a ce noeuds dans le ListView mais cela ne fonctionne....
    Ici le code dans le TreeView.cs
    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
     
    private UC_ADM_LView ListPolicy = new UC_ADM_LView();     
     private void treeView1_MouseLeft(object sender, System.Windows.Forms.TreeNodeMouseClickEventArgs e)
            {
                if (e.Button == MouseButtons.Left)
                {
                        ListPolicy.ListClear();
                        foreach (Policy Pl in PoList)
                        {
                            if (Pl.Cat_Name == e.Node.Text)
                            {
                                ListPolicy.SetListView(Pl.Name);
                            }
                         }
                }
            }
    et voici la fonction SetListView dans ListView.cs
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
           public void SetListView(string PolicyName)
            {
                ListViewItem PItem = new ListViewItem(PolicyName);
                PItem.SubItems.Add(PolicyName);
                Policy_List.Items.Add(PItem);
            }
    Mais Helas. Quelqu'un pourrait me donner un coup de mains?

    Merci Beaucoups de la disponibilite.

  2. #2
    Membre confirmé
    Inscrit en
    Juin 2007
    Messages
    459
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 459
    Points : 553
    Points
    553
    Par défaut
    As-tu configuré ta ListView en mode détail ?
    Es-tu passé en debug, passes-tu bien là où tu dois ? Quel est l'événement que tu interceptes ? MouseClick ?

  3. #3
    Membre régulier
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Août 2007
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Août 2007
    Messages : 128
    Points : 90
    Points
    90
    Par défaut
    Citation Envoyé par BCmDev Voir le message
    As-tu configuré ta ListView en mode détail ?
    Es-tu passé en debug, passes-tu bien là où tu dois ? Quel est l'événement que tu interceptes ? MouseClick ?
    J'intercepte l'evenement DoubleMouseClick, en Mode Debug je passe bien par ma function et l'addition des Elements dans la ListView mais dans le Listview en question a la fin je ne vois rien. Mais je ne saisie pas ce que vous voulez dire par configure la ListView en mode Detail....

    Merci

  4. #4
    Membre confirmé
    Inscrit en
    Juin 2007
    Messages
    459
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 459
    Points : 553
    Points
    553
    Par défaut
    Je parlais de la propriété View. Car par exemple en mode LargeIcon, seul le texte principal sera visible, pas le SubItem. Je me disais donc que si le texte était vide mais pas le SubItem, rien ne s'afficherait. Mais c'est une fausse piste car en relisant ton code je vois que les valeurs des deux éléments sont identiques (= PolicyName). Et si PolicyName était une chaîne vide, tu l'aurais vu...
    Ta liste n'est-elle pas vidée quelque part ?

  5. #5
    Membre régulier
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Août 2007
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Août 2007
    Messages : 128
    Points : 90
    Points
    90
    Par défaut
    Citation Envoyé par BCmDev Voir le message
    Je parlais de la propriété View. Car par exemple en mode LargeIcon, seul le texte principal sera visible, pas le SubItem. Je me disais donc que si le texte était vide mais pas le SubItem, rien ne s'afficherait. Mais c'est une fausse piste car en relisant ton code je vois que les valeurs des deux éléments sont identiques (= PolicyName). Et si PolicyName était une chaîne vide, tu l'aurais vu...
    Ta liste n'est-elle pas vidée quelque part ?

    Malheureusement pas, je pourrais poster le code plus ou moins complet demain matin. Car actuellement je ne suis plus au boulot et je n ai plus acces a ce code. Si non la liste n'est videe nulle part.

  6. #6
    Membre régulier
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Août 2007
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Août 2007
    Messages : 128
    Points : 90
    Points
    90
    Par défaut
    Citation Envoyé par mourbare Voir le message
    Malheureusement pas, je pourrais poster le code plus ou moins complet demain matin. Si non la liste n'est videe nulle part.
    Et voici le code: J'ai en fait deux User Control: ListView et TreeView
    le code du TreeView que j'emplis avec les fichier et Dossier , ensuite quand on doubleclick sur un fichier, je fais la lecture et sauvegarde dans une liste mais je crois c est pas la la faute car avec debug, mes donnees sont inseres dans la listView mais juste pas visible a la fin:
    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
     
    private UC_ADM_LView ListPolicy = new UC_ADM_LView();
    public void Get_Directory_File(string path)
            {
                string basedirectory = @"C:\Documents and Settings\omourbare\Desktop\ADM Template";
                this.GroupBoxTree.Text = "ADM Template";
                this.TreeView1.Nodes.Clear();
                this.TreeView1.BeginUpdate();
                DirectoryInfo dDir = new DirectoryInfo((string)basedirectory);
     
                foreach (FileSystemInfo fFileSystemInfo in dDir.GetFileSystemInfos())
                {
                    TreeNode Nd;
                    // Est ce un Dossier
                    if (fFileSystemInfo.Attributes == FileAttributes.Directory)
                    {
                        Nd = new TreeNode(fFileSystemInfo.Name);
                        Nd.Tag = fFileSystemInfo.FullName;
                        TreeView1.Nodes.Add(Nd);
                        Nd.Nodes.Add("Nothing");
                    }
                    //Est ce un Fichier 
                    if (!((fFileSystemInfo.Attributes & FileAttributes.Directory) != 0))
                    {
                        Nd = new TreeNode(fFileSystemInfo.Name);
                        Nd.Tag = fFileSystemInfo.FullName;
                        TreeView1.Nodes.Add(Nd);
                        Nd.Expand();
                    }
                }
                this.TreeView1.EndUpdate();
            }
     
            private void treeView1_MouseLeft(object sender, System.Windows.Forms.TreeNodeMouseClickEventArgs e)
            {
                if (e.Button == MouseButtons.Left)
                {
                    TreeNode tn = TreeView1.GetNodeAt(e.X, e.Y);
                    TreeView1.SelectedNode = tn;
                    if (e.Node.Tag != null)
                    {
                        this.tokenizer = new ADM_Parser((string)e.Node.Tag);
                        category_tree(e.Node);
                        tokenizer.setToBegin();
                    }
                    else
                    {
                        foreach (Policy Pl in PoList)
                        {
                            if (Pl.Cat_Name == e.Node.Text)
                            {
                                ListPolicy.SetListView(Pl.Name);
                            }
                        }
                    }
                }
            }
    Le code de ma listView, dans un premier temps les components sont initialise (ListView.Designer.cs), quand je doubleclick dans le treeview, je fais un saut dans SetListView pour les elements de la liste, additionner oui mais pas visible a la fin :
    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 partial class UC_ADM_LView : UserControl
        {
            public UC_ADM_LView()
            {
                InitializeComponent();
            }
     
            public void ListClear()
            {
                this.Policy_List.Items.Clear();
            }
     
            public void SetListView(string PolicyName)
            {
                this.Policy_List.View = View.Details;
                ListViewItem PItem = new ListViewItem(PolicyName);
                PItem.SubItems.Add(PolicyName);
                Policy_List.Items.Add(PItem);
            }
        }
    Merci Merci de votre disponibilite.

  7. #7
    Membre confirmé
    Inscrit en
    Juin 2007
    Messages
    459
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 459
    Points : 553
    Points
    553
    Par défaut
    Un truc tout bête : as-tu bien défini des colonnes sur ton contrôle ListView ?

  8. #8
    Membre régulier
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Août 2007
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Août 2007
    Messages : 128
    Points : 90
    Points
    90
    Par défaut
    Citation Envoyé par BCmDev Voir le message
    Un truc tout bête : as-tu bien défini des colonnes sur ton contrôle ListView ?
    Et si joint le code d'initialisation de la ListView:
    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
     
            private void InitializeComponent()
            {
                this.Policy_List = new System.Windows.Forms.ListView();
                this.Policy_Name = new System.Windows.Forms.ColumnHeader();
                this.Policy_Title = new System.Windows.Forms.ColumnHeader();
                this.SuspendLayout();
                // Policy_List
                this.Policy_List.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
                            | System.Windows.Forms.AnchorStyles.Left)
                            | System.Windows.Forms.AnchorStyles.Right)));
                this.Policy_List.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
                this.Policy_Name,
                this.Policy_Title});
                this.Policy_List.Location = new System.Drawing.Point(0, 0);
                this.Policy_List.Name = "Policy_List";
                this.Policy_List.Size = new System.Drawing.Size(300, 315);
                this.Policy_List.TabIndex = 0;
                this.Policy_List.UseCompatibleStateImageBehavior = true;
                this.Policy_List.View = System.Windows.Forms.View.Details;
                // Policy_Name
                this.Policy_Name.Text = "Policy Name";
                this.Policy_Name.Width = 150;
                // Policy_Title
                this.Policy_Title.Text = "Policy Title";
                this.Policy_Title.Width = 150;
                // UC_ADM_LView
                this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
                this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
                this.Controls.Add(this.Policy_List);
                this.Name = "UC_ADM_LView";
                this.Size = new System.Drawing.Size(300, 315);
                this.ResumeLayout(false);
            }
            private System.Windows.Forms.ListView Policy_List;
            private System.Windows.Forms.ColumnHeader Policy_Name;
            private System.Windows.Forms.ColumnHeader Policy_Title;
        }
    Moi je ne comprends plus rien, parceque l'addition a lieu car le compteur de la listView augmente mais pas du tout visible.

  9. #9
    Membre confirmé
    Inscrit en
    Juin 2007
    Messages
    459
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 459
    Points : 553
    Points
    553
    Par défaut
    Tu ne voudrais pas fournir le code complet, que je puisse le faire tourner ?

  10. #10
    Membre régulier
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Août 2007
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Août 2007
    Messages : 128
    Points : 90
    Points
    90
    Par défaut
    Citation Envoyé par BCmDev Voir le message
    Tu ne voudrais pas fournir le code complet, que je puisse le faire tourner ?
    Tous les fichiers c est bien trop gros j'ai fais quelques selections des fichiers donc je travaille en piece jointe mais l'execution sera pas possible parce qu il d'autres classe.

  11. #11
    Membre régulier
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Août 2007
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Août 2007
    Messages : 128
    Points : 90
    Points
    90
    Par défaut
    Citation Envoyé par mourbare Voir le message
    Tous les fichiers c est bien trop gros j'ai fais quelques selections des fichiers donc je travaille en piece jointe mais l'execution sera pas possible parce qu il d'autres classe.
    Les fichiers divises en deux, dans l espoir que ce soit executable
    Fichiers attachés Fichiers attachés

  12. #12
    Membre confirmé
    Inscrit en
    Juin 2007
    Messages
    459
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 459
    Points : 553
    Points
    553
    Par défaut
    Dans le contrôle utilisateur UC_ADM_Tree, tu définis un champ privé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    private UC_ADM_LView ListPolicy = new UC_ADM_LView();
    Or ce champ privé est une nouvelle instance de UC_ADM_LView. Ce n'est pas le même UC_ADM_LView que définis dans le contrôle UC_ADM.
    Donc oui, tu mets bien à jour ta liste. Mais c'est une liste qui n'est pas affichée...

  13. #13
    Membre régulier
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Août 2007
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Août 2007
    Messages : 128
    Points : 90
    Points
    90
    Par défaut
    Citation Envoyé par BCmDev Voir le message
    Dans le contrôle utilisateur UC_ADM_Tree, tu définis un champ privé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    private UC_ADM_LView ListPolicy = new UC_ADM_LView();
    Or ce champ privé est une nouvelle instance de UC_ADM_LView. Ce n'est pas le même UC_ADM_LView que définis dans le contrôle UC_ADM.
    Donc oui, tu mets bien à jour ta liste. Mais c'est une liste qui n'est pas affichée...
    Bonjour,
    C'est encore moi. Deja une fois de plus merci pour la peine que tu t'es donne et te donne jusqu'ici pour m'aider. Une question idiote: comment je passe donc les valeurs au vrai UC_ADM_LView de UC_ADM ? Car j'arrive a faire le NodeSelectionDoubleClick a partir de UC_ADM.
    Merci et je m'excuse pour le derangement.

  14. #14
    Membre confirmé
    Inscrit en
    Juin 2007
    Messages
    459
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 459
    Points : 553
    Points
    553
    Par défaut
    Je pense en fait que tu as un problème d'architecture.
    Le TreeView et la ListView personnalisés sont regroupés dans ton contrôle UC_ADM. C'est donc à ce contrôle que revient la tâche de synchronisation. Le TreeView n'a pas à connaître la ListView. L'événement treeView1_MouseLeft du TreeView doit à mon sens être exposé et relayé par UC_ADM_Tree. UC_ADM pourra alors s'inscrire à cet événement et mettre à jour UC_ADM_LView.

  15. #15
    Membre régulier
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Août 2007
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Août 2007
    Messages : 128
    Points : 90
    Points
    90
    Par défaut
    Citation Envoyé par BCmDev Voir le message
    Je pense en fait que tu as un problème d'architecture.
    Le TreeView et la ListView personnalisés sont regroupés dans ton contrôle UC_ADM. C'est donc à ce contrôle que revient la tâche de synchronisation. Le TreeView n'a pas à connaître la ListView. L'événement treeView1_MouseLeft du TreeView doit à mon sens être exposé et relayé par UC_ADM_Tree. UC_ADM pourra alors s'inscrire à cet événement et mettre à jour UC_ADM_LView.
    Tu as raison pour la ListView mais je suis tout de mm perdu actuellement : le treeView1_MouseLeft (deja exposé et relayé)doit actualisé une ListView qui devrait etre celui de UC_ADM auquels je n'ai pas access. Aussi le TreeView1 de UC_ADM n'a pas tous les evenements coe NodeMouseDoubleClick. tout me semble bien plus complique en C# qu'en VB.

  16. #16
    Membre confirmé
    Inscrit en
    Juin 2007
    Messages
    459
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 459
    Points : 553
    Points
    553
    Par défaut
    Je me suis mal exprimé. L'événement treeView1_MouseLeft n'est pas relayé par UC_ADM_Tree. Une inscription est bien faite au sein de UC_ADM_Tree pour cet événement mais il n'est pas relayé vers l'extérieur. Tu dois déclarer un événement de même type au niveau de UC_ADM_Tree afin que UC_ADM puisse s'y inscrire.
    Pour déclarer un événement, je te renvoie au tutoriel associé.

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

Discussions similaires

  1. Pb d'ajout dans un listview VBA EXCEL
    Par JRRENNES dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 11/08/2014, 14h02
  2. Comment ajouter dans une listview?
    Par nabilfaouzi dans le forum VB.NET
    Réponses: 2
    Dernier message: 11/06/2008, 15h16
  3. ajout dans une listview
    Par czezko dans le forum Windows Forms
    Réponses: 1
    Dernier message: 25/04/2007, 17h33
  4. ajout dynamique dans une listview
    Par k_boy dans le forum VC++ .NET
    Réponses: 3
    Dernier message: 21/09/2006, 12h23
  5. Ajouter une valeur dans un listview
    Par aliwassem dans le forum Composants VCL
    Réponses: 1
    Dernier message: 25/01/2006, 23h15

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