Selection d'un Item dans une ListView

Signaler
Messages postés
13
Date d'inscription
dimanche 13 juin 2004
Statut
Membre
Dernière intervention
30 juillet 2010
-
Messages postés
13
Date d'inscription
dimanche 13 juin 2004
Statut
Membre
Dernière intervention
30 juillet 2010
-
Bonjour tout le monde,

je vais vous faire part de mon soucis en esperant que l'un de vous puisse m'aider et ainsi m'eviter de sombrer dans une folie furieuse.
j'ai vu plusieurs topics traitant de ce sujet, essayé tout ce qui etait proposé comme solution, mais sans succes.
alors je me permet de remettre le sujet a l'ordre du jour...

alors voila, j'ai une liste ListView (lvJobParametersList) dans un Panel dont je cherche a selectionner le premier element.

pour ca, j'ai ce bout de code:
lvJobParametersList.Select();
lvJobParametersList.Focus();
lvJobParametersList.Items[0].Focused =  true;
lvJobParametersList.Items[0].Selected = true;

a vrai dire, je pense que y a de l'inutil la dedans, mais en desespoir de cause j'ai tout tenté :x

bref,  j'ai 2 cas de figure:
1 - tout ca est utilisé dans un formulaire "a part entiere" (un fomulaire normal quoi) et ca fonctionne tres bien et je peux acceder a l'element selectionné par: lvJobParametersList.SelectedItems[0]
2 - mon Panel contenant ma ListView est utilisé dans une fenetre modale, et la... c'est le drame.

explication du drame:
lvJobParametersList.SelectedItems[0] me renvoit une exception (indice hors limites)
je passe donc tout ca au debugger avec des "watch" qui vont bien et la je me retrouve face a un obscur mystere du .NET Framework.
les 3 premiere lignes de mon bout de code ne semblent rien faire, c'est a dire que en arrivant sur lvJobParametersList.Items[0].Selected = true;, on a toujours:
lvJobParametersList.Focused : FALSE
lvJobParametersList.Items[0].Focused : FALSE
donc ca c'est deja pas terrible mais bon... c'est pas mon vrai probleme.

le gros gros probleme c'est surtout que une fois l'instruction lvJobParametersList.Items[0].Selected = true; executée, j'ai bien:
lvJobParametersList.Items[0].Selected :  TRUE
par contre, j'ai lvJobParametersList.SelectedItems.Count : 0

ce qui m'ammene a mon exception quand je tente d'acceder au premier element de lvJobParametersList.SelectedItems (logique)

pour info, au moment ou je fait mon select, j'ai bien des elements dans la ListView et il y a bien un premier Item a selectionner.

voila, merci de votre attention.
en esperant que vous puissiez m'aider, merci d'avance :)

2 réponses

Messages postés
327
Date d'inscription
mardi 17 février 2004
Statut
Membre
Dernière intervention
10 avril 2010
8
Salut,

Juste une question: est ce que ton code est dans le constructeur ou appelé parle constructeur de ta form ?
Si oui, essaye de le déplacer dans l'évènement Load de ta form.
Messages postés
13
Date d'inscription
dimanche 13 juin 2004
Statut
Membre
Dernière intervention
30 juillet 2010
1
Alors c'est un peu particulier, en fait pour rentrer plus dans le detail, le Panel dont je parlais et qui contient ma ListView est en fait dérivé d'un UserControl nommé BasicPanel, ca m'a induit en erreur.

Bref, ce control (BasicPanel) possede 2 methodes: Launch() et LaunchModal().

On appeler la methode Launch() d'une occurence de BasicPanel (ou d'une sous classe en l'occurence), celle ci se charge alors dans l'ecran principal de l'application. bon ca c'est le cas qui fonctionne...

Par contre quand on appelle la methode LaunchModal() d'une occurence de BasicPanel, le formulaire n'existe pas encore. C'est la methode LaunchModal() qui créé le formulaire, qui s'y ajoute et qui appelle la methode ShowDialog() du formulaire créé en lui passant l'ecran principal de l'application comme formulaire parent.
Ce qui fait que au moment ou mon bout de code s'execute, la ListViex n'est pas encore affichée...
Et c'est sans doute de la que venait le probleme car en executant mon bout de code au Load du formulaire, ca passe mieux.

Bon maintenant j'ai un autre soucis, mais deja j'ai avancé un peu.
Merci donc [../auteur/WISHHHMASTER/231972.aspx WishhhMaster] pour cette proposition :)