Remettre la sélection d'une ligne d'un ListView

Résolu
duboue Messages postés 11 Date d'inscription samedi 23 octobre 2004 Statut Membre Dernière intervention 21 juin 2013 - 7 juin 2009 à 18:22
duboue Messages postés 11 Date d'inscription samedi 23 octobre 2004 Statut Membre Dernière intervention 21 juin 2013 - 8 juin 2009 à 11:07
Bonjour à tous,
J'ai une ListView, quand on sélectionne une ligne (je mémorise son indice), je fais un travail en ouvrant d'autres fenêtres, et quand je reviens, je n'ai plus de sélection; comment la retrouver ?
N.B : ListView.SelectedIndices est ReadOnly .....
Merci
Marcel

6 réponses

Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
7 juin 2009 à 20:30
Bonjour,

Travaille avec la propriété 'SelectedItems'

@+ Mayzz
                                                                              
Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer. <
0
duboue Messages postés 11 Date d'inscription samedi 23 octobre 2004 Statut Membre Dernière intervention 21 juin 2013
7 juin 2009 à 21:05
Peux-tu être plus précis ....?
SelectedItems retourne les valeurs des items sélectionnés, moi, ce que je veux, c'est remettre en sélection (ligne à fond bleu si tu préfères) ce qui y était.
J'ai
   -     Dim Ligne As System.Windows.Forms.ListViewItem = Me.MaListView.SelectedItems(0) ' n-uple de la ligne sélectionnée

    -    Dim k As Integer = Me.MaListView.SelectedIndices(0) ' indice de la ligne sélectionnée

...... traitement sur les valeurs de la ligne sélectionnée "Ligne.SubItems(i).Text"

Je quitte ma fenêtre et j'y reviens, comment faire en sorte que j'y retrouve la ligne "k" sélectionnée (à fond bleu)
Merci

Marcel
0
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
7 juin 2009 à 21:20
Désolé en fait je crois que je n'ai pas bien compris, tu ne ferme pas ta fenêtre ? Tu ouvre juste des fenêtre modales qui te font perdre la sélection de ton listview ? Alors met la propriété HideSelection de ton listview sur 'false'.

                                                                              
Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer. <
0
duboue Messages postés 11 Date d'inscription samedi 23 octobre 2004 Statut Membre Dernière intervention 21 juin 2013
8 juin 2009 à 08:41
Merci Mayzz, ça avance.
- Si je ne change rien à ma ListView, ta stratégie est bonne, la sélection reste bien en place et visible (pas bleue mais grisée, mais bon ... on va pas fignoler à ce point)
- Par contre, si je dois modifier la ligne sélectionnée, et donc rafraîchir la List View, là pas moyen de remettre la ligne en sélection .... pour ça aussi t'as un truc ?

Marcel
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
8 juin 2009 à 09:16
Donc dans le cas ou tu as à recréer ta liste :

'Déclaré ds le publique du form :
Dim _si As ListView.SelectedIndexCollection = ListView1.SelectedIndices

'Déclaré ou tu veux
Call RefreshMyListView() 'Sub qui vide et recr‚e ton listview
For Each _i As Integer In _si
ListView1.Items(_i).Selected = True
Next

ATTENTION, cependant les éléments de ta liste devrons être au même nombre après le refresh de celle-ci.

Exemple, tu a 10 élément, le 10ème est sélectionné, tu recré ta liste avec 9 éléments cela ne fonctionnera pas.

                                                                              
Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer. <
0
duboue Messages postés 11 Date d'inscription samedi 23 octobre 2004 Statut Membre Dernière intervention 21 juin 2013
8 juin 2009 à 11:07
Mayzz tu es super ... c'est ça qui me manquait ! je m'étais bloqué sur SelectedIndices ...
Avec mon
-> Dim k As Integer = Me.MaListView.SelectedIndices(0) ' indice de la ligne sélectionnée
de l'avant dernier message, il me suffisait d'écrire :
-> Me.MaListView.Item(k).Selected  = True ... et ça marche ...

Merci. Je marque la question comme résolue
-1
Rejoignez-nous