AutoScrolling dans une ListBox ? possible ?

sphaxslayer Messages postés 216 Date d'inscription mardi 5 avril 2005 Statut Membre Dernière intervention 17 septembre 2008 - 10 mai 2005 à 11:16
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 - 10 mai 2005 à 12:32
Salut tout l'monde, voilà j'ai une question qui parait bénine mais plutot importante pour moi: est-ce que quelqu'un saurait comment faire pour qu'une listBox défile automatiquement au fur et à mesure que les éléments y sont ajoutés ?

Je vous décris rapidement mon appli: la listeBox enregistre un historique des connexions et des déconnexions, donc à chaque nouvelle (de)connexion, hop, j'ajoute une ligne avec les infos et une ligne vide...mais le problème c'est que l'ajout se fait bien en bas de la liste, mais on voit toujours le haut, ça descend pas...j'ai fait en sorte qu'elle ne soit pas sélectionnable non plus, enfin les éléments qu'elle contient ne peuvent pas être sélectionnés...

Peut-être une solution: simuler l'événement d'un clic sur le bouton 'descendre' de la scrollBar ...? mais comment faire...?

Merci de votre aide !

"Un seul Être vous manque, et tout est dépeuplé..."

6 réponses

cs_yoannd Messages postés 305 Date d'inscription lundi 7 janvier 2002 Statut Membre Dernière intervention 10 août 2011 7
10 mai 2005 à 11:27
Tu as deux solutions :



Soit tu utilises la propriété SelectedIndex de ta list box et tu lui
donnes comme valeur MaListBox.Items.Count - 1. Ceci aura pour effet de
sélectionner le dernier élément de la liste et celà fera donc descendre
l'ascenseur automatiquement.



La seconde option est d'utiliser une ListView plutot qu'une listBox. Il
faut avant tout la mettre la propriété View sur Details et apprendre à
s'en servir correctement (si tu ne connais pas ce composant). Après,
lorsque tu veux ajouter un élément à ta liste, tu fais :



ListViewItem it = new ListViewItem();

it.Text = "test";

listView1.Items.Add(it);

it.EnsureVisible();



Ce que tu peux constater ici c'est le it.EnsureVisible, qui va provoquer un scroll de la liste jusqu'à l'élément en question...



Dernière précision, si ceci ne fonctionne pas, c'est parfois parceque
l'on traite la chose dans une boucle, ce qui peut figer l'affichage. Je
préconise donc un petit Application.DoEvents() juste après le
it.EnsureVisible();



Voila, en espérant que ca fonctionne pour toi,



Yoann
0
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
10 mai 2005 à 11:38
Salut,

Tu peux te servir des Apis en envoyant le message WM_VSCROLL :


private const int WM_VSCROLL = 0x0115;
private const int SB_BOTTOM = 7;

[DllImport("User32.dll")]
private static extern int SendMessage(
IntPtr hWnd,
int Msg,
int wParam,
int lparam
);

Utilisation :
SendMessage(listBox.Handle, WM_VSCROLL, SB_BOTTOM, 0 );

Cocoricoooooooo !!!!
coq
MVP Visual C#
0
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
10 mai 2005 à 11:40
Huhu j'avais oublier le SelectedIndex

Cocoricoooooooo !!!!
coq
MVP Visual C#
0
sphaxslayer Messages postés 216 Date d'inscription mardi 5 avril 2005 Statut Membre Dernière intervention 17 septembre 2008
10 mai 2005 à 11:43
Bon ben merci j'ai testé avec le count, ca marche, mais je ne sais pas si ca conviendra à mon maitre de stage niveau ergonomique, auquel cas j'utiliserai la ListView qui me semble pas trop mal, bien que je n'y connaisse rien...merci en tous cas :)

"Un seul Être vous manque, et tout est dépeuplé..."
0

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

Posez votre question
sphaxslayer Messages postés 216 Date d'inscription mardi 5 avril 2005 Statut Membre Dernière intervention 17 septembre 2008
10 mai 2005 à 12:27
Coq, je te remercie, je garde ton info de coté car je ne sais pas du tout une seule chose sur les APIs, donc si mon tuteur me dis que c'est pas super, j'testerais l'une de vos 2 solutions à vous 2 :):) merci!

"Un seul Être vous manque, et tout est dépeuplé..."
0
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
10 mai 2005 à 12:32
de rien :-)

Cocoricoooooooo !!!!
coq
MVP Visual C#
0
Rejoignez-nous