[VB.NET] retrouver les index des éléments selectionnés dans un listbox [Résolu]

Signaler
Messages postés
18
Date d'inscription
mardi 14 janvier 2003
Statut
Membre
Dernière intervention
11 juillet 2006
-
cs_julien__
Messages postés
53
Date d'inscription
vendredi 2 janvier 2004
Statut
Membre
Dernière intervention
1 décembre 2008
-
tout est dans le titre ce doit etre easy mais j'y arrive po.
j'ai un listbox et plusieurs éléments à l'intérieur
je fait une selection et je voudrais déplacer ces élément de 1 unité vers le haut lorsque je clique sur un bouton. comment dois-je m'y prendre?

4 réponses

Messages postés
134
Date d'inscription
vendredi 19 mars 2004
Statut
Membre
Dernière intervention
6 juin 2007

l'ensemble des index selectionné est listé dans la collection :

listbox1.selectedindices



maintenant, si tu veux déplacer un élément d'index i d'un cran vers le haut, il te faudra sans doute un truc du genre :

sub monter(i as integer)

if i=0 then exit sub



dim tx as string

tx = listbox1.items.item(i)

listbox1.items.removeat(i)

listbox1.items.insert(i-1,tx)

listbox1.selectedindices.add(i-1)

end sub

à quelque chose près...



J'espère que c'est ce que tu cherches.

AlicVB
3
Merci

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

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

Messages postés
53
Date d'inscription
vendredi 2 janvier 2004
Statut
Membre
Dernière intervention
1 décembre 2008

Pourais-tu être un peu plus précis...

Si tu as un Listbox avec 10 éléments

et que tu veux déplacer les éléments 4,5,6,9 d'un cran vers le haut, ça veut dire

que tu veux que ces éléments deviennent les 3,4,5,8 ...

et que l'ancien élément 3 devienne 7

et l'ancien 8 le 10

... c'est ça

Soit plus explicite si tu déplace vers le haut que deviennent les éléments remplacé, ils sont effacés, poussés vers le bas?
Messages postés
18
Date d'inscription
mardi 14 janvier 2003
Statut
Membre
Dernière intervention
11 juillet 2006

oui c tout-à-fait ca ;)
Messages postés
53
Date d'inscription
vendredi 2 janvier 2004
Statut
Membre
Dernière intervention
1 décembre 2008

Code à mettre dans la procédure appelante du bouton...

Dim prov
As
String



Dim inn
As
Integer



Dim tab
As
New ArrayList


tab.AddRange(ListBox1.SelectedIndices)
' je mets tous les indices sélectionnés dans un tableau



For
Each inn
In tab



If inn > 0
Then
' l'opération ne s'execute que si l'élément en cours est plus grand que zéro, car si il est zéro, lui demander de monter créé une erreur


prov = ListBox1.Items.Item(inn - 1)
' on met dans une variable provisoire l'élément qui va être remplacé


ListBox1.Items.Item(inn - 1) = ListBox1.Items.Item(inn)
' on remplace l'élément en question par le suivant


ListBox1.Items.Item(inn) = prov
' et on donne la valeur provisoire à l'élément (ce qui le fait déscendre)



End
If



Next

Si tu as des questions sur le code? Est-ce bien ça que tu voulais?