Remettre la sélection d'une ligne d'un ListView [Résolu]

Messages postés
11
Date d'inscription
samedi 23 octobre 2004
Statut
Membre
Dernière intervention
21 juin 2013
- - Dernière réponse : 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
Afficher la suite 

6 réponses

Meilleure réponse
Messages postés
11
Date d'inscription
samedi 23 octobre 2004
Statut
Membre
Dernière intervention
21 juin 2013
3
Merci
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

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 122 internautes nous ont dit merci ce mois-ci

Commenter la réponse de duboue
Messages postés
2859
Date d'inscription
mardi 15 avril 2003
Statut
Membre
Dernière intervention
26 novembre 2013
13
0
Merci
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. <
Commenter la réponse de Mayzz
Messages postés
11
Date d'inscription
samedi 23 octobre 2004
Statut
Membre
Dernière intervention
21 juin 2013
0
Merci
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
Commenter la réponse de duboue
Messages postés
2859
Date d'inscription
mardi 15 avril 2003
Statut
Membre
Dernière intervention
26 novembre 2013
13
0
Merci
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. <
Commenter la réponse de Mayzz
Messages postés
11
Date d'inscription
samedi 23 octobre 2004
Statut
Membre
Dernière intervention
21 juin 2013
0
Merci
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
Commenter la réponse de duboue
Messages postés
2859
Date d'inscription
mardi 15 avril 2003
Statut
Membre
Dernière intervention
26 novembre 2013
13
0
Merci
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. <
Commenter la réponse de Mayzz