Récupérer la valeur d'un listbox par le Scrollbar [Résolu]

Messages postés
141
Date d'inscription
mardi 18 mars 2003
Statut
Membre
Dernière intervention
3 octobre 2010
- - Dernière réponse : cs_PHILOUVB
Messages postés
141
Date d'inscription
mardi 18 mars 2003
Statut
Membre
Dernière intervention
3 octobre 2010
- 25 juil. 2009 à 17:34
Bonsoir à tous

je suis à la recherche d'une méthode me permettant de récupérer la valeur de mon listbox en sachant que je ne me sers que du Scrollbar

J'ai un listbox qui contient 5 valeurs (de 0 à 4). Et lorsque je clique sur le scrollbar (flèche haut ou flèche bas), je voudrais récupérer la valeur qui s'affiche dans le listbox.

Mon soucis est que c'est la première valeur qui sort par défaut à chaque fois.

La seule instruction qui à l'air de réagir au mouvement du scrollbar est la suivante

Private Sub ListRegroup_MouseCaptureChanged(ByVal sender As Object, ByVal e As System.EventArgs)

Je ne sais pas si c'est la bonne ?...

Merci par avance pour toute votre aide

PhilouVB
Afficher la suite 

3 réponses

Meilleure réponse
Messages postés
1270
Date d'inscription
mardi 11 novembre 2003
Statut
Membre
Dernière intervention
24 juillet 2013
6
3
Merci
Salut Philouvb

MouseCaptureChanged d'après les renseignements sur MSDN servirait à indiquer si un contrôle gagne ou perd la possibilité d'être manipulé avec la souris ( un peu comme le Gotfocus et Lostfocus de VB 6.0)
C'est ce que j'ai compris d'après la documentation anglaise de MSDN

Pour ton problème ( d'après ce que j'ai compris) il faudrait utiliser une listbox sans scrollbar et un scrollbar indépendant ( 2 contrôles en fait)
La scrollbar indépendante te donnerait le numéro de ligne de la listbox et il te resterait à afficher la listbox à partir de cette ligne

Un exemple : soit les numéros de 1 à 100 et la listbox qui affiche 10 lignes. La srollbar indépendante a sa plage de valeurss de 1 à 100. Si Scrollbar.value vaut 20 par exemple tu affiche dans ta listbox les lignes 20 à 29 et si Scrollbar.value vaut 57 tu affiches de 57 à 66 ( soit 10 lignes)
il faudra peut-être remplir d'abord un tableau de toutes les valeurs que peut contenir la listbox si celle-ci était scrollable mais l'astuce est qu'il ne faut pas qu'elle le soit

j'ai utilisé cette technique plusieurs fois dans les projets "Acces Direct Disque" où j'affichais les secteurs d'un disque dur en héxa-Ascii ( une zone de texte sans scrollbar qui contient le secteur et une scrollbar qui me sélectionne le secteur à afficher)

La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi.

GRENIER Alain

Dire « Merci » 3

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

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

Commenter la réponse de cs_Galain
Messages postés
11
Date d'inscription
jeudi 23 juillet 2009
Statut
Membre
Dernière intervention
25 juillet 2009
3
Merci
Bonjour,

j'ai testé ça, ça a l'air de fonctionner pour donner l'index de l'item affiché en haut de la liste (0 = premier item):

i = - ListBox1.GetItemRectangle(0).Top \ ListBox1.GetItemHeight(0)

ensuite, pour récupérer la valeur associée :

ListBox1.Items(i)

peut-être que ça peut t'aider...

Dire « Merci » 3

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

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

Commenter la réponse de phila38
Messages postés
141
Date d'inscription
mardi 18 mars 2003
Statut
Membre
Dernière intervention
3 octobre 2010
0
Merci
Merci pour tout, je teste tout ça ce week end

PhilouVB
Commenter la réponse de cs_PHILOUVB