Listview "bloquée

Résolu
djedjeska Messages postés 90 Date d'inscription mercredi 21 novembre 2007 Statut Membre Dernière intervention 25 mai 2013 - 27 sept. 2011 à 18:44
 Utilisateur anonyme - 29 sept. 2011 à 20:53
Bon, je fais encore appel au public car je fais face à un problème incompréhensible.

J'ai créé une Listview, tout simplement car je souhaitais une Listbox dont je peux changer la couleur des lignes.
J'ai donc ajusté toutes les propriétés de manière à ce que la Listview ressemble le plus possible à une Listbox (View sur "List", MultiSelect sur False, etc.).

J'ajoute des items dedans, tout se passe bien, je peux les sélectionner.
Mais une des lignes de ma Listview lance une boucle, qui ne doit pas s'arrêter tant que je n'ai pas à nouveau sélectionné une autre ligne de la Listview. J'ai donc ajouté un "My.Application.Doevents", qui me permet de faire tout un tas d'autres opérations telles que cliquer sur des boutons, des Combobox etc.

Pourtant, le seul contrôle qui ne réagit plus est... la listview. J'ai tout essayé, impossible de déclencher à nouveau son événement "click", et je suis sur que le problème vient de la boucle, car en retirant celle-ci, la listview ne se bloque jamais.

Si vous avez une idée, elle sera la bienvenue...

Voici le code de façon très très simplifiée :

Private Sub ListView1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles ListView1.Click

Boucle()

End Sub

Sub Boucle ()
Do while MaBoucle = True
My.Application.DoEvents()
Loop
End Sub

27 réponses

NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
27 sept. 2011 à 22:41
Bon courage alors.

Tu verras, ce n'est pas si compliqué quand tu auras compris.

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS et aussi ce lien[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list
---
Mon site
0
djedjeska Messages postés 90 Date d'inscription mercredi 21 novembre 2007 Statut Membre Dernière intervention 25 mai 2013
27 sept. 2011 à 23:05
Tu remarquera qu'on utilise l'événement ItemSelectionChanged plutôt que Click de manière à récupérer le paramètre d'événement (e) qui contient des informations sur l'item cliqué.


J'ai passé je sais pas combien de temps à chercher comment récupérer l'index de l'item sélectionné, en utilisant l'événement ItemSelectionChanged

J'ai toujours eu une erreur, et j'en ai donc déduit que lors de cet événement l'index de la ligne sélectionnée n'était pas encore "actualisé"... C'est pour cette raison que j'utilise l'événement click, qui lui me permet de récupérer l'index comme ceci :

ListView1.SelectedItems(0).Index


J'ai effectivement essayé d'utiliser le paramètre (e) mais sans succès...
0
djedjeska Messages postés 90 Date d'inscription mercredi 21 novembre 2007 Statut Membre Dernière intervention 25 mai 2013
27 sept. 2011 à 23:07
Ah non !! J'utilisais le SelectedIndexChanged, est-ce très différent ?
0
Utilisateur anonyme
27 sept. 2011 à 23:18
ItemSelectionChanged s'exécute 2 fois (si un autre item est déjà sélectionné, une seule fois sinon) pour celui qui est désactivé et l'autre fois pour celui qui est sélectionné.
Utilises ensuite IsSelected pour déterminer lequel est activé.
Bonne soirée.
0

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

Posez votre question
djedjeska Messages postés 90 Date d'inscription mercredi 21 novembre 2007 Statut Membre Dernière intervention 25 mai 2013
27 sept. 2011 à 23:20
Merci bonne soirée !
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
28 sept. 2011 à 16:58
@ Banana32 : Cet exemple est parfait et bien commenté.
Pour ma part, débutant averti en .Net (*), j'ai enfin trouvé là un exemple concret.
Merci, j'ai appris quelque chose.

Pourquoi ne le publierais-tu pas en tant que <Snippet> ?
Je pense que cela pourrait en éclairer bien d'autres.
Merci d'avance.



(*) .Net : Il a fallu attendre la version 2011 de Visual Studio pour pouvoir travailler intelligemment comme on le faisait avec le mode SDI de l'IDE de VB6.
Faudra t-il encore attendre 7 ans pour que les fenêtres d'options soient redimensionnables ?
On dirait que chez Microsoft, personne ne se sert des outils qu'ils développent eux mêmes.
VB6 Power !


nb : "ici je passe x (en string)" : Et les parents de x sont au courant ?
(je sors)
0
Utilisateur anonyme
29 sept. 2011 à 20:53
Bonsoir Jack et merci.
Cet exemple est parfait.

Et bien non justement car après avoir répondu au demandeur sur la double exécution de l'événement ItemSelectionChanged, je me suis rendu compte que mon exemple était faux. Il manque justement le test e.IsSelected pour éviter de lancer un thread pour rien (celui de l'item désélectionné).

Le gros problème de ce forum, c'est qu'il est impossible d'éditer nos messages pour les corriger.
J'ai remarqué au fil de certains sujets ici ou là, que sans cette option, lorsque l'aidant corrige un code dans un message suivant, le demandeur, lancé sur une fausse piste, peut se sentir complètement perdu.

Et merci encore à toi pour ton investissement personnel, j'apprends pas mal de toi aussi sur excel comme quoi

Et oui, les parents de x sont au courant depuis longtemps
(je sors aussi)

Bien à toi.
0
Rejoignez-nous