SelectedNode depuis une string

Signaler
Messages postés
33
Date d'inscription
mercredi 18 décembre 2002
Statut
Membre
Dernière intervention
6 avril 2006
-
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
-
Bonjour,

Voilà mon problème: j'aiun treeview avec l'arborescence de ma machine. Dans une string j'ai un chemin (ex:" c:\Program Files...") et je voudrai sélectionner le noeud correspondant à ce chemin dans mon treeview!

en fait, j'ai essayer de faire MonTreeview.SelectedNode=.... ? le problème c'est que ca ne prend que le type TreeNode. Donc faudrai à partir de ma chaîne la transformer en TreeNode.

Quelqu'un à une idée?

Merci d'avance ++

8 réponses

Messages postés
341
Date d'inscription
mercredi 8 juin 2005
Statut
Membre
Dernière intervention
10 février 2009
2
Salut, pourquoi ne pas construire un noeud à partir de ton string et sélectionné ce noeud ?
Messages postés
33
Date d'inscription
mercredi 18 décembre 2002
Statut
Membre
Dernière intervention
6 avril 2006

Parce que si je créer un noeud à partier de ma string il m'ajoute un noeud avec le nom de ma string "c:\Program Files..." alors qu'il fait déjà parti de l'arborescence et que je veux juste le sélectionner!
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
54
Salut,
Une idée qui me passe par la tête (sûrement pas la meilleure...) c'est de tager chaque élément (chaque Node) lors de la construction de ton treeview (tu le tag avec le Path complet).
Ensuite, tu as plus qu'à itérer sur tout tes Nodes et de vérifier si le tag est égal à la valeur du string entrer.


<HR>
[/auteurdetail.aspx?ID=13319
[Pub] ]http://www.csharpfr.com/auteurdetail.aspx?ID=13319 [\Pub]
C# forever /infomsg/auteurdetail.aspx?ID=13319
Messages postés
341
Date d'inscription
mercredi 8 juin 2005
Statut
Membre
Dernière intervention
10 février 2009
2
Salut, je ne vois pas comment l'appel du constructeur de la classe TreeNode modifie ton contrôle TreeView.
Messages postés
341
Date d'inscription
mercredi 8 juin 2005
Statut
Membre
Dernière intervention
10 février 2009
2
Dans le pire des cas tu peux aussi parcourir ton arbre pour obtenir le noeud cherché puis faire un SelectNode :

/// <summary>
/// Retourne le premier noeud trouvé à partir du noeud de départ spécifié avec le nom spécifié
/// </summary>
/// Le noeud à partir duquel, commencer la recherche

/// Le nom du neud cherché

/// Le noeud cherché

public void GetNode(TreeNode StartNode, string NodeName, ref TreeNode Result)
{
if (StartNode.Text != NodeName)
{
foreach (TreeNode CurrentNode in StartNode.Nodes)
{
GetNode(CurrentNode, NodeName, ref Result);
}
}
else
{
Result = StartNode;
}
}
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
54
C'est exactement ce que je disais de faire :
Utiliser le tag est peut-être mieux que le text, car il veut éventuellement afficher le nom des fichiers dans le treeview (un nom peut revenir plusieurs fois).
Si le Node est taggé avec le path complet et que le text est le nom du fichier, on a pas ce problème.


<HR>
[/auteurdetail.aspx?ID=13319
[Pub] ]http://www.csharpfr.com/auteurdetail.aspx?ID=13319 [\Pub]
C# forever /infomsg/auteurdetail.aspx?ID=13319/infomsg/auteurdetail.aspx?ID=13319
Messages postés
341
Date d'inscription
mercredi 8 juin 2005
Statut
Membre
Dernière intervention
10 février 2009
2
C'est vrai Bidou c'est ce que tu proposais mais je me suis dit qu'un petit bout de code en plus pour l'illustrer ne ferais pas de mal. C'est également vrai pour l'utilisation du Tag. Dsl
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
54
Euh oui, t'as bien fait de mettre un morceau de code, j'avais un peu la flegme
C'était juste que ton code se base sur le Text et que c'est pas forcément une bonne idée (tag est souvent mieux (un cast en plus à chaque itération tout de même...)).


<HR>
[/auteurdetail.aspx?ID=13319
[Pub] ]http://www.csharpfr.com/auteurdetail.aspx?ID=13319 [\Pub]
C# forever /infomsg/auteurdetail.aspx?ID=13319/infomsg/auteurdetail.aspx?ID=13319
/infomsg/auteurdetail.aspx?ID=13319