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 :

VirtualMode avec ListView


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Mai 2008
    Messages
    125
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mai 2008
    Messages : 125
    Par défaut VirtualMode avec ListView
    Bonjour à tous,

    J'essai de charger plus de 50 000 lignes dans une ListView, ce qui est maintenant opérationnel grâce au VirtualMode est aux évènements associés. Mon problème est que je souhaite modifier l'ImageIndex d'un élément lors d'un click qur un bouton, et apparemment cela ne s'effectue pas.

    Voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
                Dim i As Integer = lvUsers.SelectedIndices(0)
                Dim lv As New ListViewItem
                lv = lvUsers.Items(i)
                lv.ImageIndex = 3
    Savez vous si c'est faisable ou pas ? Si oui, avez vous des conseils s'il vous plait ?

    Merci à tous !

  2. #2
    Membre confirmé
    Inscrit en
    Mai 2008
    Messages
    125
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mai 2008
    Messages : 125
    Par défaut
    Personne n'a une petite idée s'il vous plait ? Je bloque vraiment sur ce point...

    Merci à tous !

  3. #3
    Membre extrêmement actif
    Inscrit en
    Avril 2008
    Messages
    2 573
    Détails du profil
    Informations personnelles :
    Âge : 65

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 573
    Par défaut
    bonjour

    D'ou vient la valeur 3 de ton index...car la liste "virtuelle" (liste visible) est un tout y compris les images correspondantes
    Le ImageList appartenant à la liste "virtuelle" visible est lui aussi "virtuel"
    Ton index doit donc faire reference à une image de la collection d' ImageList.Images virtuelle...!!!

    Il faut faire un test pour verifier sa validite avec l'affectation ...
    ton code devrait etre :
    Code vb.net : 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
     
     Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            Dim i As Integer = listView1.SelectedIndices(0)
            Dim lv As New ListViewItem
            lv = listView1.Items(i)
            'recupere instance du ImageList virtuel correspondant
            Dim virualImgList As ImageList = lv.ImageList
     
     
            Dim tonIndex As Integer = 3
            'test de validite de l'index 
            If virualImgList.Images.Count <> 0 And tonIndex <= virualImgList.Images.Count - 1 Then
                lv.ImageIndex = tonIndex
            End If
     
     
        End Sub
    Bon code...

  4. #4
    Membre confirmé
    Inscrit en
    Mai 2008
    Messages
    125
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mai 2008
    Messages : 125
    Par défaut
    Je ne vois pas quelle est la différence avec mon code ? Car l'index 3 signifie la 3ème image de ImageList...

    A quoi sert cette ligne s'il te plait ? :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
            'recupere instance du ImageList virtuel correspondant
            Dim virualImgList As ImageList = lv.ImageList
    Merci beaucoup !

  5. #5
    Membre extrêmement actif
    Inscrit en
    Avril 2008
    Messages
    2 573
    Détails du profil
    Informations personnelles :
    Âge : 65

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 573
    Par défaut
    bonjour
    Je ne vois pas quelle est la différence avec mon code ? Car l'index 3 signifie la 3ème image de ImageList...
    Ton code ne verifie pas la validite de l'index d'image avant de l'assigner..
    Si je mets 1000 ton code plantera si ton cache virtuel est de 40 elements seulement cela veut dire que ImageList.Count= 40....& les index d'image seront compris entre 0 et 39...

    A quoi sert cette ligne s'il te plait ? :
    C'est pour s'assurer que j'accede au bon ImageList le "virtuel"....

  6. #6
    Membre confirmé
    Inscrit en
    Mai 2008
    Messages
    125
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mai 2008
    Messages : 125
    Par défaut
    Merci pour ta réponse. J'ai effectivement mis directement 3 car je connais la valeur des images de ImageList, donc je ne me souciais pas de cela, mais c'est vrai que c'est beaucoup mieux et ne causera pas d'erreur.

    Je ne savais pas que l'on pouvais changer la valeur d'une image d'un ListViewItem avec un Virtual ImageList. Je vais tester tout cela et te dirais ce que ça donne.

    Merci beaucoup !

Discussions similaires

  1. Réponses: 5
    Dernier message: 12/08/2006, 21h35
  2. [C#]Aide pour gestion dataset / XML avec listview(débutant)
    Par Low-Fi dans le forum Windows Forms
    Réponses: 1
    Dernier message: 15/04/2006, 12h21
  3. probleme avec listview
    Par gaut dans le forum C++
    Réponses: 3
    Dernier message: 09/08/2004, 01h04
  4. [C#] Problème avec ListView
    Par yannick dans le forum Windows Forms
    Réponses: 4
    Dernier message: 03/06/2004, 18h29
  5. [VB6] Problèmes avec ListView
    Par FlopErik dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 12/03/2003, 17h33

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