djedjeska
Messages postés90Date d'inscriptionmercredi 21 novembre 2007StatutMembreDernière intervention25 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
NHenry
Messages postés15102Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention27 mars 2024159 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
djedjeska
Messages postés90Date d'inscriptionmercredi 21 novembre 2007StatutMembreDernière intervention25 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...
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.
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 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)
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)