Déselection par programme d'un Treeview

Le
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.
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Jacques93
Le #15400241
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.
SAISAS
Le #15400211
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.



Jacques93
Le #15400081
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.
SAISAS
Le #15398821
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.



Publicité
Poster une réponse
Anonyme