IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

[VB.net 2005] Rechercher un noeud treeview par son text


Sujet :

VB.NET

  1. #1
    Membre actif Avatar de stolx_10
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2006
    Messages
    374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 374
    Points : 270
    Points
    270
    Par défaut [VB.net 2005] Rechercher un noeud treeview par son text
    Bonjour,

    Suivant ce schéma : Nom : 1.JPG
Affichages : 698
Taille : 12,7 Ko

    Je souhaite ajouter un nouvel item dans le noeud sélectionné qui a pour nom "temporaire".

    Attention ! je ne veux pas un selectItem mais bien une recherche par le nom du node.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    'Friend WithEvents uxTv As System.Windows.Forms.TreeView
     
    'Private Class InvNode
    '        Inherits TreeNode
     
    Dim node As InvNode
     
    node = uxTv.(?)
    (?) = récupération du noeud contenant "Temporaire"

    Cette liste peut changer en fonction des éléments que je lui donne car elle se construit sur des éléments de base de données. Donc le nombre de noeuds diffèrent suivant la liste.

    Pouvez vous me donner un coup de main s'il vous plaît, je suis un peu coincé

    Merci

  2. #2
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    il faut parcourir tous les noeuds de tous les noeuds pour retrouver le bon (voir récursivité)

    ou alors au fur et à mesure que tu ajoutes tes noeuds dans le treeview tu les stockes en meme temps dans un dictionnaire avec comme le clé le texte du treeview
    comme ca tu le retrouves facilement et rapidement
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  3. #3
    Membre actif Avatar de stolx_10
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2006
    Messages
    374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 374
    Points : 270
    Points
    270
    Par défaut
    Merci pour ta réponse, cependant j'ai trouvé réponse qui me convient parfaitement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Dim a As Integer
     
    For a = 0 To uxTv.Nodes(0).Nodes.Count '1
          If uxTv.Nodes(0).Nodes.Item(a).Text = "Temporaire" Then '2
                node = uxTv.Nodes(0).Nodes.Item(a) '3
                [...]
                Exit For
          End If
    Next
    Etant donné que "temporaire" se trouve sur le même parent :
    1) me permet de scanner les enfants du parent 1 par 1
    2) dès que je tombe sur le bon enfant, je m'arrête
    3) je choisis de me placer au niveau de ce noeud.

    Merci d'avoir essayé de m'expliquer une autre méthode.
    Je passe en "résolu"

    A bientôt

  4. #4
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    la première méthode que j'explique c'est ca mais en partant du principe que le noeud peut etre à n'importe quel niveau
    si tu es sur qu'il est sur tel rang alors une boucle suffit

    sinon il serait mieux d'écrire ca en objet plutot qu'en code type vb6 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    For each n as TreeNode In uxTv.Nodes(0).Nodes
        If n.Text = "Temporaire" Then 
            node = n
            Exit For
        End If
    Next
    voir même en programmation fonctionnelle si tu es sur le framework 3.5 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    node = (From n as TreeNode In uxTv.Nodes(0).Nodes Where n.Text = "Temporaire" Select n).First
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  5. #5
    Membre actif Avatar de stolx_10
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2006
    Messages
    374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 374
    Points : 270
    Points
    270
    Par défaut
    Merci je vais tester ça

    sinon il serait mieux d'écrire ca en objet plutot qu'en code type vb6
    oui je sais, il m'arrive parfois de faire des séquences de type VB5-6 dans du VB.net.

    J'ai une excuse, je bosse sur des projets (vieux) professionnels qui tournent encore sous VB5 (et 6), et celui pour lequel je suis ici en .Net

  6. #6
    Membre actif Avatar de stolx_10
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2006
    Messages
    374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 374
    Points : 270
    Points
    270
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    For each n as TreeNode In uxTv.Nodes(0).Nodes
        If n.Text = "Temporaire" Then 
            node = n
            Exit For
        End If
    Next
    Fonctionne très bien

    l'autre, j'ai pas testé et je suis en .net framework 2.0 pour mon appli de toute façon.
    Pour info, c'est un logiciel d'inventaire qui tourne sur un PDA sous Windows CE 5.0, et c'est pas franchement terrible

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 02/09/2009, 10h35
  2. [SimpleXML] et recherche d'un élément par son attribut
    Par Tutotictac dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 28/03/2009, 16h39
  3. Récupérer un noeud XML par son nom
    Par mhamdi45 dans le forum Windows Forms
    Réponses: 1
    Dernier message: 10/07/2007, 18h10
  4. [VB.NET 2005] Recherche de droite à gauche d'un carractere
    Par lezard777 dans le forum Windows Forms
    Réponses: 1
    Dernier message: 15/04/2006, 16h02
  5. [VB.NET 2005] Fond d'un form par PNG
    Par FeaR dans le forum Windows Forms
    Réponses: 2
    Dernier message: 02/04/2006, 13h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo