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
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 ...
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
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. <
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 ?
'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. <