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]TreeView1 faire un copier-coller d'un dossier [Débutant]


Sujet :

VB.NET

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Cantal (Auvergne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2015
    Messages : 3
    Points : 3
    Points
    3
    Par défaut [VB NET]TreeView1 faire un copier-coller d'un dossier
    Bonsoir à tous,
    Je suis nouveau sur le forum, mais pas en vb net, à part les objets dur à manipuler, tel les TreeView.

    J'ai une question que je n'arrive pas à résoudre depuis un bon moment :
    Comment avoir le path d'un ou des dossiers sélectionnés dans une TreeView1 ?

    De plus, j'aimerais que lorsque le ou es dossiers sont sélectionnées, l'utilisateur appui sur un bouton, et l'image se trouvant dans ma PictureBox1 se déplace (de sa source vers l'emplacement des paths des /du dossiers sélectionner).
    UN GRAND Merci pour ceux qui m'aideront à résoudre ce mystère ! :p
    J'y ai consacréer énormément de temps sur ce problème mais, impossible de trouver la solution !
    Merci d'avance pour toutes vos futures réponses !

    Cordialement,
    Guillaume

  2. #2
    Membre actif
    Avatar de guatto
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    179
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2014
    Messages : 179
    Points : 226
    Points
    226
    Par défaut
    Bonjour Guillaume15,

    je n'ai jamais travaillé avec le TreeView mais je crois que ce lien pourrait très bien t'aider il traite ton 1er problème (la récupération du dossier sélectionné)

    http://www.vbdotnetforums.com/listvi...-treeview.html

    Pour l'image de ta PictureBox il suffit de stocker le Path récupéré précédemment dans une var String, et de récupérer le Path de ton image que tu dois obligatoirement au préalable, sinon tu peux le récupérer comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    PictureBox1.Load("lien_vers_ton_image")
    Dim path_image As String = PictureBox1.ImageLocation
    Dim nom As String = Path.GetFileName(props)
    ensuite passer au déplacement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    // le path stocké
    Dim path_repertoire As String = ""
    My.Computer.FileSystem.MoveFile(path_image, path_repertoire & "\"  & nom)
    j'espère que ça pourra t'aider, bonne chance !

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Cantal (Auvergne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2015
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    Bonsoir guatto,
    Merci de m'avoir répondu, mais le lien ne me correspond pas car, le code est faux. Merci pour le reste en tout cas !

  4. #4
    Expert confirmé
    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
    Points : 4 005
    Points
    4 005
    Billets dans le blog
    7
    Par défaut
    Bonsoir,

    Citation Envoyé par Guillaume15 Voir le message
    Bonsoir guatto,
    Merci de m'avoir répondu, mais le lien ne me correspond pas car, le code est faux. Merci pour le reste en tout cas !
    C'est vraiment irritant de lire des choses pareilles.... Le code n'est pas faux, tu ne sais tout simplement pas l'adapter à tes besoins !!!

    Breffff.......

    Avant toute chose, il faudrait déjà savoir comment tu créés tes noeuds car c'est lorsque tu les créés dynamiquement que tu dois affecter ce que tu veux à la propriété ".Tag" (de type Object) :
    - un chemin de fichier, de dossier (de type String)
    - une image (de type bitmap ou Image par exemple)
    - une liste
    - une instance.....
    ....etc....

    Exemple :

    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
     
      'Le chemin racine pour la recherche de répertoires et fichiers
            Dim path As String = "C:\Windows\System32\fr-FR\Licenses"
     
            'On instancie un noeaud racine
            Dim rNode As New TreeNode(path)
            'On déplie automatiquement le noeud
            rNode.ExpandAll()
     
            'On boucle en recherchant tous les répertoires  
            For Each d In Directory.GetDirectories(path, "*", SearchOption.AllDirectories)
                'On retourne une instance DirectoryInfo pour faciliter la manipulation des noms de dossiers (complet ou partiel)
                Dim di As New DirectoryInfo(d)
     
                'On instancie un noeud qui affichera le nom court du répertoire en cours de traitement
                Dim dNode As New TreeNode(di.Name)
                'C'est ICI que l'on affecte le nom complet du répertoire à la propriété .Tag pour pouvoir l'utiliser plus tard dans le programme !!!
                dNode.Tag = di.FullName
                'On déplie automatiquement le noeud
                dNode.ExpandAll()
     
                'On parcours tous les fichiers contenus dans le répertoire en cours de traitement
                For Each f In di.GetFiles("*", SearchOption.AllDirectories)
                    'On instancie un noeud qui affichera le nom court du fichier en cours de traitement
                    Dim fNode As New TreeNode(f.Name)
                    'C'est ICI que l'on affecte le nom complet du fichier à la propriété .Tag pour pouvoir l'utiliser plus tard dans le programme !!!
                    fNode.Tag = f.FullName
                    'On déplie automatiquement le noeud
                    fNode.ExpandAll()
                    'On ajoute le noeud précédement créé (c'est un noeud fichier) au noeud dn répertoire en cours de traitement
                    dNode.Nodes.Add(fNode)
                Next
                'On ajoute le noeud précédement créé (c'est un noeud répertoire) au noeud racine
                rNode.Nodes.Add(dNode)
            Next
            'On ajoute le noeud racine au Treeview
            TreeView1.Nodes.Add(rNode)
        End Sub
    Il n y a ici rien de bien compliqué ! Programmer ne veut pas forcement dire taper des lignes de codes mais c'est avant tout savoir exprimer textuellement ce qu'on attends du programme par le biais de directives bien précises !!

    Donc pour résumer :

    ---> Tu utilises le gestionnaire d’événement AfterSelect de ton Treeview afin de récupérer la valeur de la propriété Tag du noeud sélectionné (en te basant sur mon exemple plus haut) !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
       Private Sub Treeview1_AfterSelect(sender As Object, e As TreeViewEventArgs) Handles Treeview1.AfterSelect
       If not e.Node.Tag is nothing Then 
           Msgbox(e.Node.Tag)
       End If
       End Sub
    ---> Pour copier L'image de ta PictureBox vers le chemin du noeud sélectionné (rappel : e.Node.Tag) il te suffit de déclarer une variable de type String (SelectedPath as string) accessible depuis ta classe Form1 (où se situe ton treeview), puis tu affectes la valeur dans le gestionnaire dévènement ".AfterSelect" :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
       Private SelectedPath$
       Private Sub Treeview1_AfterSelect(sender As Object, e As TreeViewEventArgs) Handles Treeview1.AfterSelect
       If not e.Node.Tag is nothing Then 
          SelectedPath = e.Node.Tag
       End If
       End Sub
    Enfin dans le gestionnaire Click de ton button1, tu vérifies qu'il existe bien une image dans ta PictureBox et que le chemin de la variable SelectedPath existe bel et bien et enfin tu lances la copie :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    PictureBox1.Image.Save(SelectedPath .....)
    PS: attention à bien prendre en compte le type et l'extension de l'image sinon tu risques fort de rencontrer des soucis !!!


    A+

  5. #5
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Cantal (Auvergne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2015
    Messages : 3
    Points : 3
    Points
    3
    Par défaut RE
    Salut,
    Désolé de ne pas avoir répondu avant.
    Merci pour l'aide !
    Et, oui je n'arrivais pas a me servir du code proposé.
    Pour votre code, j'ai essayé de mettre une autre racine, mais ça ne fonctionne pas.
    Je voudrais mettre "C:\" à la place de ton code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        'Le chemin racine pour la recherche de répertoires et fichiers
        Dim path As String = "C:\Windows\System32\fr-FR\Licenses"
    Mais, impossible !
    Pouvez-vous me dire pourquoi c'est impossible ?Je trouve cela étrange !
    Cordialement,
    Guillaume

  6. #6
    Expert confirmé
    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
    Points : 4 005
    Points
    4 005
    Billets dans le blog
    7
    Par défaut
    Bonsoir,

    Allez je vais être bon prince :

    Si tu parcours C:\ à la recherche de répertoires il est fort probable qu'un répertoire du type "C:\Documents and Settings" ne soit pas accessible en lecture du fait de ses restrictions au niveau des droits !

    A toi de prévoir un scénario adequate de manière à exclure cela.

    A+

  7. #7
    Membre expérimenté
    Homme Profil pro
    Développeur .Net / Delphi
    Inscrit en
    Juillet 2002
    Messages
    738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur .Net / Delphi
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2002
    Messages : 738
    Points : 1 745
    Points
    1 745
    Par défaut
    Bonjour,

    Juste une remarque en passant : Faire Directory.GetDirectories sur le repertoire racine (C:\) en incluant toute l'arborescence des sous-dossiers risque de prendre des siècles. Il serait plutôt préférable de lire les dossiers enfants uniquement au moment de l'expand d'un node selectionné. De plus la méthode indiquée par wallace1 est bonne mais elle crée un noeud racine sous lequel on trouvera toute l'arborescence des sous-dossiers et pour chaque dossier et sous-dossier on va lire tous les fichiers qu'il contient en incluant les sous-dossiers (). Donc aussi bien pour le GetDirectories que pour le GetFiles, ne lire que le répertoire actif et non pas tous les sous-répertoires et répéter l'opération uniquement à la sélection d'un dossier ou sous-dossier.

  8. #8
    Expert confirmé
    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
    Points : 4 005
    Points
    4 005
    Billets dans le blog
    7
    Par défaut
    @ebastien : je suis tout à fait d'accord avec toi ..... mais honnêtement en l'état Guillaume15 n'a pas l'air d'y voir clair alors c'est en ce sens que je ne vais pas plus loin dans le raisonnement.

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 08/11/2009, 19h52
  2. Faire un copier coller sur un JTextField
    Par Marie.B dans le forum Composants
    Réponses: 6
    Dernier message: 16/07/2009, 15h04
  3. Faire un copier/coller
    Par Bktero dans le forum Interfaces Graphiques
    Réponses: 2
    Dernier message: 07/07/2009, 17h50
  4. [VBA-E]Faire un Copier coller d'une ListBox à une autre
    Par anubisigfrid dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 14/03/2007, 14h40
  5. Probleme avec les fichier faire un copier coller
    Par mcdonald dans le forum Général Python
    Réponses: 4
    Dernier message: 29/01/2006, 13h38

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