OVH Cloud OVH Cloud

Déclenchement de l'event AfterSelect inutilement !!

6 réponses
Avatar
Cool6a
Bonjour,

Je modifie par programme la prop SelectedImageIndex d'une TreeView selon le
noeud selectionné (dans l'event myTreeView_AfterSelect),
cette modification déclenche une autre fois cet événement !! donc le gros
traitement de ce dernier est exécuté deux fois inutilement,
ce qui a un impact sur les perf de l'apli, surtout que j'ai le même problème
avec mes +eurs TreeViewS.
est ce qu'il y a un moyen pour résoudre ce problème sans passer pas des
petits bricolages ?
Merc d'avance.

6 réponses

Avatar
Vko
En utilisant Reflector, j'ai regardé rapidement le code de la propriété
SelectedImageIndex, et visiblement le fait de changer l'image sélectionner
provoque la reconstruction du controle ce qui provoque le déclenchement de
l'évènement AfterSelect.

Donc déjà il faut éliminer l'utilisation de la propriété SelectedImageIndex.

Pourquoi tu n'utilises pas la propriété SelectedImageIndex des noeuds de ta
TreeView ? Elle te permet de modifier l'index de l'image lors que le noeud
est sélectionné et cela pour chaque item individuellement.



"Cool6a" wrote:

Bonjour,

Je modifie par programme la prop SelectedImageIndex d'une TreeView selon le
noeud selectionné (dans l'event myTreeView_AfterSelect),
cette modification déclenche une autre fois cet événement !! donc le gros
traitement de ce dernier est exécuté deux fois inutilement,
ce qui a un impact sur les perf de l'apli, surtout que j'ai le même problème
avec mes +eurs TreeViewS.
est ce qu'il y a un moyen pour résoudre ce problème sans passer pas des
petits bricolages ?
Merc d'avance.





Avatar
Cool6a
Je ne peux pas utiliser cette prop au momment de développement car mon arbre
est remplie au momment de l'execution, donc l'arbre est vide au debut et
donc je n'ai pas d'item avant d'executer le prog :(
"Vko" a écrit dans le message de
news:
En utilisant Reflector, j'ai regardé rapidement le code de la propriété
SelectedImageIndex, et visiblement le fait de changer l'image sélectionner
provoque la reconstruction du controle ce qui provoque le déclenchement de
l'évènement AfterSelect.

Donc déjà il faut éliminer l'utilisation de la propriété


SelectedImageIndex.

Pourquoi tu n'utilises pas la propriété SelectedImageIndex des noeuds de


ta
TreeView ? Elle te permet de modifier l'index de l'image lors que le noeud
est sélectionné et cela pour chaque item individuellement.



"Cool6a" wrote:

> Bonjour,
>
> Je modifie par programme la prop SelectedImageIndex d'une TreeView selon


le
> noeud selectionné (dans l'event myTreeView_AfterSelect),
> cette modification déclenche une autre fois cet événement !! donc le


gros
> traitement de ce dernier est exécuté deux fois inutilement,
> ce qui a un impact sur les perf de l'apli, surtout que j'ai le même


problème
> avec mes +eurs TreeViewS.
> est ce qu'il y a un moyen pour résoudre ce problème sans passer pas des
> petits bricolages ?
> Merc d'avance.
>
>
>


Avatar
Fred
Bonjour,
Tu veux dire que les images utilisées ne sont connues qu'au moment de
l'exécution ?


"Cool6a" a écrit dans le message de news:
%
Je ne peux pas utiliser cette prop au momment de développement car mon
arbre
est remplie au momment de l'execution, donc l'arbre est vide au debut et
donc je n'ai pas d'item avant d'executer le prog :(
"Vko" a écrit dans le message de
news:
En utilisant Reflector, j'ai regardé rapidement le code de la propriété
SelectedImageIndex, et visiblement le fait de changer l'image
sélectionner
provoque la reconstruction du controle ce qui provoque le déclenchement
de
l'évènement AfterSelect.

Donc déjà il faut éliminer l'utilisation de la propriété


SelectedImageIndex.

Pourquoi tu n'utilises pas la propriété SelectedImageIndex des noeuds de


ta
TreeView ? Elle te permet de modifier l'index de l'image lors que le
noeud
est sélectionné et cela pour chaque item individuellement.



"Cool6a" wrote:

> Bonjour,
>
> Je modifie par programme la prop SelectedImageIndex d'une TreeView
> selon


le
> noeud selectionné (dans l'event myTreeView_AfterSelect),
> cette modification déclenche une autre fois cet événement !! donc le


gros
> traitement de ce dernier est exécuté deux fois inutilement,
> ce qui a un impact sur les perf de l'apli, surtout que j'ai le même


problème
> avec mes +eurs TreeViewS.
> est ce qu'il y a un moyen pour résoudre ce problème sans passer pas des
> petits bricolages ?
> Merc d'avance.
>
>
>






Avatar
Cool6a
Bonjour,
je m'explique: j'ai par exemple une treeViw à 3 niveaux, chaque niveau (Type
d'item) a ça propre image (prop : ImageIndex de l'Item) img1,img2 et img3.
Au momment de l'execution, quand l'user selectionne un noeud (ex de type 1)
alors l'image de ce noeud "img1" change pour prendre la valeur de l'image
qui se trouve dans la prop SelectedImageIndex de la Treeview (ex img0), donc
moi je force cette prop à prendre la valeur de l'index de l'image qui
correspond au noeud selectionné, ce qui déclenche innutilement l'événnement
AfterSelect de la TreeView(un gros traitement).
Donc les images utilisées sont déjà connues au momment de développement et
qui se trouvent dans l'objet ImageList qui correspond à la TreeView (sa prop
ImageList), c'est les Items qui ne sont connus qu'au momment de l'exécution
car je les recupère d'un flux Xml.
J'espère que c'est clair pour vous mnt ;-)
La bonne nouvelle c'est que en vous écrivant ce message j'ai trouvé la
solution, c'est de définir/modifier la valeur de la prop SelectedImageIndex
de chaque ITEM et non pas du TreeView tout entier, j'ai apris une nouvelle
chose ce matin ;-)

"Fred" a écrit dans le message de
news:%
Bonjour,
Tu veux dire que les images utilisées ne sont connues qu'au moment de
l'exécution ?


"Cool6a" a écrit dans le message de news:
%
> Je ne peux pas utiliser cette prop au momment de développement car mon
> arbre
> est remplie au momment de l'execution, donc l'arbre est vide au debut et
> donc je n'ai pas d'item avant d'executer le prog :(
> "Vko" a écrit dans le message de
> news:
>> En utilisant Reflector, j'ai regardé rapidement le code de la propriété
>> SelectedImageIndex, et visiblement le fait de changer l'image
>> sélectionner
>> provoque la reconstruction du controle ce qui provoque le déclenchement
>> de
>> l'évènement AfterSelect.
>>
>> Donc déjà il faut éliminer l'utilisation de la propriété
> SelectedImageIndex.
>>
>> Pourquoi tu n'utilises pas la propriété SelectedImageIndex des noeuds


de
> ta
>> TreeView ? Elle te permet de modifier l'index de l'image lors que le
>> noeud
>> est sélectionné et cela pour chaque item individuellement.
>>
>>
>>
>> "Cool6a" wrote:
>>
>> > Bonjour,
>> >
>> > Je modifie par programme la prop SelectedImageIndex d'une TreeView
>> > selon
> le
>> > noeud selectionné (dans l'event myTreeView_AfterSelect),
>> > cette modification déclenche une autre fois cet événement !! donc le
> gros
>> > traitement de ce dernier est exécuté deux fois inutilement,
>> > ce qui a un impact sur les perf de l'apli, surtout que j'ai le même
> problème
>> > avec mes +eurs TreeViewS.
>> > est ce qu'il y a un moyen pour résoudre ce problème sans passer pas


des
>> > petits bricolages ?
>> > Merc d'avance.
>> >
>> >
>> >
>
>




Avatar
Fred
"Cool6a" a écrit dans le message de news:

Bonjour,



Bonjour

Donc les images utilisées sont déjà connues au momment de développement et
qui se trouvent dans l'objet ImageList qui correspond à la TreeView (sa
prop
ImageList), c'est les Items qui ne sont connus qu'au momment de
l'exécution
car je les recupère d'un flux Xml.
J'espère que c'est clair pour vous mnt ;-)



Tout à fait

La bonne nouvelle c'est que en vous écrivant ce message j'ai trouvé la
solution, c'est de définir/modifier la valeur de la prop
SelectedImageIndex
de chaque ITEM et non pas du TreeView tout entier, j'ai apris une nouvelle
chose ce matin ;-)



C'était ce que je voulais proposer ! Mais c'est également ce qu'avait
proposé Vko ;-)
Je cite :
Pourquoi tu n'utilises pas la propriété SelectedImageIndex des noeuds de ta
TreeView ? Elle te permet de modifier l'index de l'image lors que le noeud
est sélectionné et cela pour chaque item individuellement.

D'où mon interrogation.
Avatar
Cool6a
Oui exactement mais j'avais pas compris sa question car je ne savais pas que
les items aussi ont cette prop :(, moi j'ai pu resoudre mon problème mais ce
qui est domage c'est que si on veut changer cette proprieté pour la TreeView
pour une raison ou une autre alors l'événnement AfterSelect sera declenché
:( !! j'aurais bien aimer avoir une option pour choisir est ce qu'on veut le
declencher ou pas...

"Fred" a écrit dans le message de
news:
"Cool6a" a écrit dans le message de news:

> Bonjour,

Bonjour

> Donc les images utilisées sont déjà connues au momment de développement


et
> qui se trouvent dans l'objet ImageList qui correspond à la TreeView (sa
> prop
> ImageList), c'est les Items qui ne sont connus qu'au momment de
> l'exécution
> car je les recupère d'un flux Xml.
> J'espère que c'est clair pour vous mnt ;-)

Tout à fait

> La bonne nouvelle c'est que en vous écrivant ce message j'ai trouvé la
> solution, c'est de définir/modifier la valeur de la prop
> SelectedImageIndex
> de chaque ITEM et non pas du TreeView tout entier, j'ai apris une


nouvelle
> chose ce matin ;-)

C'était ce que je voulais proposer ! Mais c'est également ce qu'avait
proposé Vko ;-)
Je cite :
Pourquoi tu n'utilises pas la propriété SelectedImageIndex des noeuds de


ta
TreeView ? Elle te permet de modifier l'index de l'image lors que le noeud
est sélectionné et cela pour chaque item individuellement.

D'où mon interrogation.