Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Déselection par programme d'un Treeview

4 réponses
Avatar
SAISAS
Bonjour,

j'ai essayé de sélectionner un noeud d'un arbre avec l'instruction suivante :

Set Treeview1.SelectedItem = Nothing

Résultat : je plante à la deuxième execution, et très violement sur certains
postes (pas tous!).

Quelqu'un saurait-il m'indiquer :
1) Comment déselectionner un noeud
2) Pourquoi ça plante si violement

Cordialement.

4 réponses

Avatar
Jacques93
Bonjour SAISAS,
SAISAS a écrit :
Bonjour,

j'ai essayé de sélectionner un noeud d'un arbre avec l'instruction suivante :

Set Treeview1.SelectedItem = Nothing

Résultat : je plante à la deuxième execution, et très violement sur certains
postes (pas tous!).

Quelqu'un saurait-il m'indiquer :
1) Comment déselectionner un noeud
2) Pourquoi ça plante si violement

Cordialement.



Pourrais tu mettre en ligne une partie du code permettant de reproduire
ce comportement. Pour moi aucun problème ...

--
Cordialement,

Jacques.
Avatar
SAISAS
Bonjour,

j'ai trouvé pourquoi ça bogue, ce qui ne répond pas à mon problème.

Voila du code pour reproduire le bogue :

Set UserControl.Choix.SelectedItem =
UserControl.Choix.Nodes.Item("C" & UserControl.Valeur.Text)
Set UserControl.Choix.SelectedItem = Nothing

En fait, lorsqu'on a quelque chose dans SelectedItem, et que l'on met
Nothing, ça plante.

Cordialement.


"Jacques93" a écrit :

Bonjour SAISAS,
SAISAS a écrit :
> Bonjour,
>
> j'ai essayé de sélectionner un noeud d'un arbre avec l'instruction suivante :
>
> Set Treeview1.SelectedItem = Nothing
>
> Résultat : je plante à la deuxième execution, et très violement sur certains
> postes (pas tous!).
>
> Quelqu'un saurait-il m'indiquer :
> 1) Comment déselectionner un noeud
> 2) Pourquoi ça plante si violement
>
> Cordialement.

Pourrais tu mettre en ligne une partie du code permettant de reproduire
ce comportement. Pour moi aucun problème ...

--
Cordialement,

Jacques.



Avatar
Jacques93
SAISAS a écrit :
Bonjour,

j'ai trouvé pourquoi ça bogue, ce qui ne répond pas à mon problème.

Voila du code pour reproduire le bogue :

Set UserControl.Choix.SelectedItem =
UserControl.Choix.Nodes.Item("C" & UserControl.Valeur.Text)
Set UserControl.Choix.SelectedItem = Nothing

En fait, lorsqu'on a quelque chose dans SelectedItem, et que l'on met
Nothing, ça plante.

Cordialement.



Par pure curiosité, quel intérêt de sélectionner un Item pour le
supprimer immédiatement ?

Sinon, comme il s'agit d'un UserControl, n'y aurait il pas d'effet de
bord sur le projet qui l'utilise ?

--
Cordialement,

Jacques.
Avatar
SAISAS
Bonjour,

bien sûr, cette séquence ne présente aucun intérêt, sauf de planter chez moi
et de reproduire exactement le bogue que je rencontre de manière imparable ...

En fait, mon code est l'équivalent d'une "Datacombo" mais avec un arbre au
lieu d'une liste, et le code incriminé permet de récupérer une source de
données et de sélectionner le noeud de l'arbre qui correspond à la donnée. Ma
séquence est la suivante :

Set Arbre.SelectedItem = Nothing
On Error Resume Next
Set Arbre.SelectedItem = Arbre.Nodes.Item(Clé)
On Error Goto 0

Je mets d'abord à Nothing pour éviter de conserver la dernière valeur si la
clé n'existe pas, puis je cherche la valeur dans l'arbre (en inhibant
l'erreur si la clé n'existe pas).

Le résultat pratique est que la première fois, mon code fonctionne sans
aucun problème, mais que la seconde fois, il plante sur l'affectation à
Nothing!

Pour résoudre le problème, j'ai mi le "On Error Resume next" avant
l'affectation à Nothing, et que donc si la valuer n'existe pas, l'item
sélectionné est celui de la valeur précédente (en particulier lorsque le
donnée source vaut "Null").

Voila (comme quoi les chemins de la programmation sont parfois mistérieux!).

Cordialement.

"Jacques93" a écrit :

SAISAS a écrit :
> Bonjour,
>
> j'ai trouvé pourquoi ça bogue, ce qui ne répond pas à mon problème.
>
> Voila du code pour reproduire le bogue :
>
> Set UserControl.Choix.SelectedItem =
> UserControl.Choix.Nodes.Item("C" & UserControl.Valeur.Text)
> Set UserControl.Choix.SelectedItem = Nothing
>
> En fait, lorsqu'on a quelque chose dans SelectedItem, et que l'on met
> Nothing, ça plante.
>
> Cordialement.

Par pure curiosité, quel intérêt de sélectionner un Item pour le
supprimer immédiatement ?

Sinon, comme il s'agit d'un UserControl, n'y aurait il pas d'effet de
bord sur le projet qui l'utilise ?

--
Cordialement,

Jacques.