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 :

Ajouter subitems dans listview (boucle)


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de aus3004
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 74
    Par défaut Ajouter subitems dans listview (boucle)
    Bonjour,

    J'ai une listview qui se génère comme cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ListView1.Columns.Add("Site de connexion", 107, HorizontalAlignment.Left)
            ListView1.Columns.Add("Login/identifiant", 177, HorizontalAlignment.Left)
            ListView1.Columns.Add("Mot de passe", 177, HorizontalAlignment.Left)
            ListView1.Columns.Add("Date d'ajout", 106, HorizontalAlignment.Left)
    J'ai mon code qui permet d'ouvrir un document texte et de sélectionner une ligne sur deux et d'afficher à partir du 16ème caractère le texte dans la colonne "Login/identifiant".
    Comme il y a plusieurs lignes dans mon document texte, la ligne qui suit est copiée dans la colonne d'à côté. Ce que je voudrais c'est passer à la ligne en dessous lorsque la première case de "Login/identifiant" est remplie. J'ai essayé divers trucs mais ca ne donne rien, j'arrive pas à informer dans la boucle que quand une case est remplie, on passe à celle d'en dessous comme une listbox.

    Voila mon code:
    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
    Private Sub ChargerMAJToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ChargerMAJToolStripMenuItem.Click
            OpenFileDialog1.AddExtension = True ' Ouvre les documents txt
            OpenFileDialog1.Filter = "(*.txt)|*.txt|Tous les fichiers (*.*)|*.*"
            'If OpenFileDialog1.ShowDialog = Windows.Forms.DialogResult.OK Then
            Dim monStreamReader As New StreamReader("D:\mdp.txt") 'Stream pour la lecture
            Dim ligne As String ' Variable contenant le texte de la ligne
            Dim listing As New ListViewItem
            Dim i As Integer = 0
            ligne = monStreamReader.ReadLine()
            While Not ligne Is Nothing
                If i Mod 2 = 0 Then
                    Dim login As String = ligne
                    login = login.Substring(16)
                    listing.SubItems.Add(login)
                End If
                ligne = monStreamReader.ReadLine()
                i = i + 1
            End While
            ListView1.Items.Add(listing)
            monStreamReader.Close()
        End Sub
    Merci à vous, si vous pouvez me dépanner

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    700
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 700
    Par défaut
    Bonjour,
    en principe, il faut enregistrer l'item dès qu'un login est trouvé :
    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
            Dim monStreamReader As New StreamReader(fichierALire) 'Stream pour la lecture
            Dim ligne As String ' Variable contenant le texte de la ligne
            'Dim listing As New ListViewItem
            Dim i As Integer = 0
            ligne = monStreamReader.ReadLine()
            While Not ligne Is Nothing
                If i Mod 2 = 0 Then
                    Dim login As String = ligne
                    login = login.Substring(16)
                    Dim listing As New ListViewItem()
                    ''*** Ligne suivante à ajouter pour sauter une colonne.
                    'listing.SubItems.Add("")
                    listing.SubItems.Add(login)
                    ListView1.Items.Add(listing)
                End If
                ligne = monStreamReader.ReadLine()
                i = i + 1
            End While
            'ListView1.Items.Add(listing)
            monStreamReader.Close()

  3. #3
    Membre confirmé Avatar de aus3004
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 74
    Par défaut
    Merci beaucoup chrismonoye, le code est fonctionnel !!!!!

    Mais j'ai encore deux problèmes :

    1. si je met
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    listing.Items.Add(site)
    dans la colonne 1, j'ai l'erreur
    Erreur 4 'Items' n'est pas un membre de 'System.Windows.Forms.ListViewItem'.
    2. pour les autres colonnes cela fonctionne bien mais quand la colonne 2 est remplie et que cela passe à la 3 les items sont ajouté au niveau du dernier item de la colonne 2, pareil pour la colonne 4 avec le dernier item de la colonne 3.
    Ex : c1 c2 c3 c4
    -------m1
    -------m2
    -------m3
    -----------m1
    -----------m2
    --------------m1
    --------------m2

    Merci encore
    Images attachées Images attachées  

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    700
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 700
    Par défaut
    Après avoir valorisé tes variables "site", "login", "motPasse" et "dateajout",
    je pense qu'il faudrait faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
                    Dim listing As New ListViewItem(site)
                    listing.SubItems.Add(login)
                    listing.SubItems.Add(motPasse)
                    listing.SubItems.Add(dateajout)
                    ListView1.Items.Add(listing)
    Je ne sais pas si cela t'est possible, le but étant de remplir la ligne entièrement avant de passer à la suivante.

  5. #5
    Membre confirmé Avatar de aus3004
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 74
    Par défaut
    Merci la colonne "site" est bien formée

    Il reste plus que le problème du :
    Ex : c1 c2 c3 c4
    ----m1
    ----m2
    -------m1
    -------m2
    -------m3
    -----------m1
    -----------m2
    --------------m1
    --------------m2

    Tu pense pas que c'est impossible !!?
    Il faudrait dire que si il y a des cases vides au dessus alors on décale.
    Mais les subsitems ne concernent que de droite à gauche. Il y aurait-il pas une fonction pour de haut en bas ?

  6. #6
    Membre Expert
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    700
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 700
    Par défaut
    Bonsoir,
    selon ce que je connais,
    New ListViewItem("toto") créé un nouvel élément dans Listview, et on peut lui adjoindre des objets ListViewItem.
    Ce ListViewItem forme une ligne si on peut dire et chaque New ListViewItem en créé une nouvelle.
    D'où le résultat que tu décris.
    C'est pour cela qu'il est plus simple de renseigner l'élément et tous ces objets et d'ajouter le tout au ListView.
    Remplir colonne par colonne nécessiterait de rappeler la ligne pour la modifier.
    C'est sûrement possible, mais coder ça ...
    Maintenant, reste à savoir à quoi ressemble le fichier txt.
    Est il possible d'y extraire au préalable "site", et ses objets "login" etc ...
    Pourquoi traiter une ligne sur deux?
    Est il imposé ou le créés tu toi même?
    Un extrait significatif de celui ci, permettrait aux lecteurs de cette discussion de t'apporter plus d'éléments de solution.

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

Discussions similaires

  1. Ajouter dans listView
    Par abbd dans le forum Visual C++
    Réponses: 1
    Dernier message: 07/03/2007, 19h00
  2. Ajouter image dans une ListView
    Par Dimitri_87 dans le forum Windows Forms
    Réponses: 1
    Dernier message: 20/02/2007, 00h50
  3. ajout dynamique dans une listview
    Par k_boy dans le forum VC++ .NET
    Réponses: 3
    Dernier message: 21/09/2006, 11h23
  4. [c# VS2005] Sélection d'un subitem dans un ListView
    Par FredericB dans le forum Windows Forms
    Réponses: 1
    Dernier message: 29/06/2006, 16h13
  5. Ajouter une colonne (par du code) dans Listview
    Par __fabrice dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 23/11/2005, 17h39

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