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 :

Peut-on extraire une Folder avec un OpenFileDialog ?


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé Avatar de excalybur
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Novembre 2014
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2014
    Messages : 317
    Par défaut Peut-on extraire une Folder avec un OpenFileDialog ?
    Bonjour,

    Meilleurs voeux à tous et une excellent santé pour 2022 !

    Mo problème : J'ai besoin de récupérer le chemin du répertoire de mes fichiers. Exemple de ce que je veut récupérer dans un OpenFileFolder est D:\abc\xyz\

    Le programme ci-dessous va me donner D:\abc\xyz\CHENE.TXT car la sélection se fait lorsque l'on clique sur le fichier. Ceci est un problème qui oblige l'opérateur à faire une manipulation de plus sans logique avec ce qu'il doit faire : obtenir le répertoire final.

    Ce que je n'arrive pas à faire de façon simple : obtenir le répertoire final en trois cliques : le 1er pour sélectionner le disque, le 2ème pour sélectionner le répertoire abc et 3ème pour sélectionner le répertoire xyz, puis sélection le bouton1 pour sauvegarder le root et fermer OpenFileFolder par programme.

    Mes recherches diverses (puisqu'il n'existe pas OpenFileFolder pour VB.net !) :
    j'ai regardé vers TreeView qui le permet au travers d'une usine à gaz (250 lignes de programme) : https://www.dreamincode.net/forums/t...file-explorer/
    Bref ça marche très bien (ne pas oublier d'importer la class à créer(!). C'est très joli mais très lourd pour un petit programme.

    Il y a surement beaucoup plus simple pour mon cas.

    Mo code actuel dasn un sub :

    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
    Dim ShowdialogOKCancel As Integer
     
            Dim choisir As New OpenFileDialog   
     
                     'choisir le fichier à lire ok ou cancel
                ''VERSION ORIGINALE :
                ShowdialogOKCancel = choisir.ShowDialog()
                If ShowdialogOKCancel = 1 Then
                    ToolStripTextBox1.Text = choisir.FileName
                    Disk = Mid(choisir.FileName, 1, 2) 'ok
                End If
                If ShowdialogOKCancel = 2 Then
                    Call InitAll()
                    Exit Sub 'cancel
                End If
     
                'identifie le chemin complet 
                PathName = Path.GetDirectoryName(choisir.FileName)
    Quid avec FolderBrowserDialog ?

    Merci d'avance pour vos idées.

    A vous lire

  2. #2
    Modérateur
    Avatar de sevyc64
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    10 250
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 250
    Par défaut
    Citation Envoyé par excalybur Voir le message
    Quid avec FolderBrowserDialog ?
    C'est ce qu'il faut utiliser.

    C'est l'équivalent du OpenFileDialog pour les dossiers.

  3. #3
    Membre éprouvé Avatar de excalybur
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Novembre 2014
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2014
    Messages : 317
    Par défaut
    Bonsoir sevyc64,

    Oui et non selon la littérature. Mais c'est bien oui est la réponse ! Tu as raison.

    En fait en relisant et en m’inspirant de l'excellent tutorial https://www.dreamincode.net/forums/t...file-explorer/ j'ai fini par comprendre un certains nombres de ficelles et j'ai re-écrit ma routine ainsi :

    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
        Private Sub btnBrowse_Click(ByVal sender As System.Object,
    ByVal e As System.EventArgs) Handles BtnBrowse.Click
            'Créer un box dialog folder (répertoire)
            Dim objFolderDialog As New FolderBrowserDialog()
            'Passer object à Parameter et  obtenir Selected network folder
            TxtPath.Text = GetNetworkFolders(objFolderDialog)
        End Sub
        Public Shared Function GetNetworkFolders(ByVal FolderBrwDlg _
            As FolderBrowserDialog) As String
            'Obtenir le type du Folder Dialog bog
            Dim type As Type = FolderBrwDlg.[GetType]
            If FolderBrwDlg.ShowDialog() = DialogResult.OK Then
                Return FolderBrwDlg.SelectedPath
            Else
                Return ""
            End If
        End Function
    Le bouton est pour l'illustration, on le remplacera par ses propres commandes dans son programme.

    Il suffit de récupérer la valeur de TxtPath.Text et cela fonctionne sans faire une usine à gaz.

    Une sorte de "openFolderDialog" light mais efficace.

  4. #4
    Membre Expert Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Par défaut
    Bonsoir

    Compte tenu de ta demande initiale, je crois que le FolderBrowserDialog qui permet le choix d'un dossier est plus efficace (pour les dossiers) que l'OpenFileDialog qui nécessite le choix d'un fichier pour permettre ensuite l'extraction du Path.

    ....


  5. #5
    Membre éprouvé Avatar de excalybur
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Novembre 2014
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2014
    Messages : 317
    Par défaut
    Merci à tous, ça marche très bien et je voudrais savoir s'il est possible dans le nouveau programme que j'ai écrit ci-dessous de déployer le contenu du disque que j'ai sélectionné avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    objFolderDialog.SelectedPath = Disk
    afin de gagner un clique à la sélection du répertoire ad'hoc.

    L'ajout de "\*.*" ne fonctionne pas, c'est logique puisque l'on ne travail pas dans les fichiers mais dans les répertoires uniquement.

    Mon code actuel :
    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
     
            Dim Resultat As String
     
            Try
                'si disk non défini :
                If Disk = "" Then Disk = Mid(Directory.GetDirectoryRoot(ProgramPath), 1, 2)  'example disk = "d:"
     
                'Créer un box dialog folder (répertoire)
                Dim objFolderDialog As New FolderBrowserDialog()
     
                'supprime la possibilité de créer un répertoire
                objFolderDialog.ShowNewFolderButton = False
     
                'sélectionne le disque validé plus haut
                objFolderDialog.SelectedPath = Disk
     
                Dim result As DialogResult = objFolderDialog.ShowDialog()
     
                'si OK 
                If result = DialogResult.OK Then Resultat = objFolderDialog.SelectedPath
                If result = DialogResult.No Then Exit Sub
     
                PathName = Mid(Resultat, 3)
                Disk = Mid(Resultat, 1, 2)
     
                'chemin complet visible
                ToolStripTextBox1.Text = Disk + PathName 
     
                'Clean up
                objFolderDialog.Dispose()
                objFolderDialog = Nothing
    A vous lire.

Discussions similaires

  1. Peut-on faire une API avec Delphi ?
    Par WebPac dans le forum API, COM et SDKs
    Réponses: 14
    Dernier message: 11/04/2023, 14h48
  2. peut-on relier une vue avec une Table?
    Par geof dans le forum MS SQL Server
    Réponses: 0
    Dernier message: 04/03/2008, 15h27
  3. extraire une image avec LWP
    Par apo.arutha dans le forum Web
    Réponses: 2
    Dernier message: 06/12/2006, 16h50
  4. peut on rafraichir une page avec bouton radio?
    Par zorba49 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 06/06/2006, 12h33
  5. Peut-on avoir une clef avec Base64 en PHP ?
    Par maty2006 dans le forum Langage
    Réponses: 4
    Dernier message: 30/05/2006, 12h38

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