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 :

TREEVIEW - Vérification et création de noeuds à partir d'un chemin


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de Shennong
    Homme Profil pro
    Technicien Informatique/Hotliner
    Inscrit en
    Février 2012
    Messages
    186
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Technicien Informatique/Hotliner
    Secteur : Santé

    Informations forums :
    Inscription : Février 2012
    Messages : 186
    Par défaut TREEVIEW - Vérification et création de noeuds à partir d'un chemin
    Bonjour à tous,

    Je suis face à un épineux problème de TreeView à compléter, mais je ne parviens pas à trouver la logique qui m'aidera à le résoudre !
    C'est pourquoi je sollicite votre bienveillance et vos compétences aiguisées en VB.Net

    Je vous expose mon problème :
    Dans mon application, je possède actuellement un TreeView avec une certaine arborescence. La chose importante à savoir est que le noeud racine doit le seul et unique noeud racine du TreeView.

    Parti de là, je souhaiterai trouver un moyen de créer le ou les noeuds nécessaire à l'ajout à partir d'un chemin de type : Root\Node\Childnode1\Childnode2
    J'ai commencé à chercher en ajoutant mon noeud racine du Treeview au début du chemin : MonRoot\Root\Childnode1\Childnode2

    Le but étant maintenant de créer les noeuds inexistants de Root jusqu'à Childnode2, en vérifiant si une partie du chemin existe déjà ou pas, et donc compléter si besoin.
    Je pars donc du principe que MonRoot existant déjà, je laisse et passe au segment suivant du chemin, je n'ai pas besoin de le créer à nouveau. Admettons que Root existe déjà, je n'ai pas besoin de le créer à nouveau. Ensuite, Childnode1 n'existe pas par exemple, je le crée dans Root. Et pour finir par exemple ChildNode2 existe déjà, donc parfait, pas besoin de le créer.

    J'espère que mes explications sont claire, car ce n'est pas évident à expliquer sans faire un roman.

    À ceux qui pourront m'aider, je vous remercie par avance !

    Bonne fin de journée à vous.

    Cordialement-

  2. #2
    Membre Expert
    Avatar de wallace1
    Homme Profil pro
    Administrateur systèmes
    Inscrit en
    Octobre 2008
    Messages
    1 966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Administrateur systèmes
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 966
    Billets dans le blog
    7
    Par défaut
    Bonjour Shennong,

    Bon je ne vois pas où se situe le problème, ou alors peut-être que je n'ai pas bien compris..... :

    Il y a 3 contrôles : 1 Treeview, 1 Button, 1 Textbox
    - Le treeview contient un topNode au formLoad : celui que tu dis être inscrit d'office
    - tu inscris un path dans la textbox et tu cliques sur le bouton pour ajouter les nodes respectifs dans le treeview.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
     
    Public Class Form1
        Public Sub New()
            InitializeComponent()
        End Sub
     
        Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
            Tview.Nodes.Add(New TreeNode("MonRoot"))
        End Sub
     
        Private Sub BtnAddPath_Click(sender As Object, e As EventArgs) Handles BtnAddPath.Click
            If Not TxbPath.Text = "" Then
                Dim paths = Tview.Nodes(0).Name & "\" & TxbPath.Text
                Dim ThelastNode As TreeNode = Nothing
                Dim CompletesubPath As String
     
                For Each SplittedPath In paths.Split("\")
                    CompletesubPath = String.Empty
     
                    For Each subPath As String In SplittedPath.Split("\")
                        CompletesubPath &= subPath & "\"
                        Dim nodes As TreeNode() = Tview.Nodes.Find(CompletesubPath, True)
                        If nodes.Length = 0 Then
                            If ThelastNode Is Nothing Then
                                ThelastNode = Tview.Nodes.Add(CompletesubPath, subPath)
                            Else
                                ThelastNode = ThelastNode.Nodes.Add(CompletesubPath, subPath)
                            End If
                        Else
                            ThelastNode = nodes(0)
                        End If
                    Next
                Next
                Tview.ExpandAll()
            End If
        End Sub
     
    End Class
    ++

  3. #3
    Membre extrêmement actif
    Inscrit en
    Avril 2008
    Messages
    2 573
    Détails du profil
    Informations personnelles :
    Âge : 65

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 573
    Par défaut
    Citation Envoyé par Shennong Voir le message
    Bonjour à tous,

    Je vous expose mon problème :
    Dans mon application, je possède actuellement un TreeView avec une certaine arborescence. La chose importante à savoir est que le noeud racine doit le seul et unique noeud racine du TreeView.

    Parti de là, je souhaiterai trouver un moyen de créer le ou les noeuds nécessaire à l'ajout à partir d'un chemin de type : Root\Node\Childnode1\Childnode2
    J'ai commencé à chercher en ajoutant mon noeud racine du Treeview au début du chemin : MonRoot\Root\Childnode1\Childnode2

    Le but étant maintenant de créer les noeuds inexistants de Root jusqu'à Childnode2, en vérifiant si une partie du chemin existe déjà ou pas, et donc compléter si besoin.
    Je pars donc du principe que MonRoot existant déjà, je laisse et passe au segment suivant du chemin, je n'ai pas besoin de le créer à nouveau. Admettons que Root existe déjà, je n'ai pas besoin de le créer à nouveau. Ensuite, Childnode1 n'existe pas par exemple, je le crée dans Root. Et pour finir par exemple ChildNode2 existe déjà, donc parfait, pas besoin de le créer.

    J'espère que mes explications sont claire, car ce n'est pas évident à expliquer sans faire un roman.
    C'eet plutôt nébuleux
    Primo:
    Le chemin que tu donnes :
    "MonRoot\Root\Childnode1\Childnode2 correctement formulé serait ceci "Root\Childnode1\Childnode2"
    car il y a une seule Racine d'arbre dans un TreeView.
    Secundo:
    Ensuite le laïus qui suit est contradictoire et tu te noies dans un verre d'eau.
    La validité du chemin donné se vérifie simplement par:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    myTV.PathSeparator = "\"
    myTV.SelectedNode=Chilnode2
     
    myTV.SelectedNode.FullPath =TV.SelectedNode
    La dernière instruction renverra une chaîne .
    La chaîne renvoyé est :
    1/ égale à la chaîne du path saisie,le chemin est VALIDE TOTALEMENT ET EXISTE DEJA.
    2/ n'est pas égale à la chaîne du path , FullPath etant sans pitie renverra soit
    - Root si le chemin est INVALIDE c.à.d soit contradictoire(cas ou Chilnode2 existe et Chilnode1 n'existe pas ) ou inexistant.
    -soit un chemin partiel ,si le chemin est incomplet.
    De là ,il est clair quelle sera la suite de l'algo.

Discussions similaires

  1. [WPF][VB] treeview, binding et création de noeud
    Par R00t_infinity dans le forum Windows Presentation Foundation
    Réponses: 0
    Dernier message: 23/12/2013, 11h51
  2. Réponses: 2
    Dernier message: 05/07/2013, 13h04
  3. Réponses: 7
    Dernier message: 18/02/2010, 16h13
  4. TreeView -> ajouter un child à un noeud donné
    Par fake dans le forum Composants VCL
    Réponses: 6
    Dernier message: 26/03/2003, 17h14

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