none
[VB.net] Boite parcourir - petit problème, mais pas grand chose RRS feed

  • Question

  • Salut tout le monde, voilà, j'ai trouvé un coding qui fait une boite "parcourir"

    Voici le code :

    <code>

     Public Enum ctConfigBrowse
            PrtButtonOkCancel = -273
            PrtButtonOkCancelInfo = -17
            PrtButtonOkCancelTextbox = -1
            ButtonOkCancel = 512
            ButtonOkCancelTextbox = 528
        End Enum

        'Clés pour BrowseAndCreate
        Public Enum ctConfigDir
            DirExplorer = 1 'Interdit
            DirProgrammeUser
            DirPanneauDeConfiguration
            DirImprimantesEtTelecopieurs
            DirMesDocuments
            DirFavorisUser
            DirDemarrageUser
            DirDocumentsRecents
            DirSendTo
            DirCorbeille
            DirMenuDemarrer
            DirBureau
            DirMaMusique
            DirMesVideosUser
            DirPosteDeTravail = 17
            DirFavorisReseau
            DirVoisinReseau
            DirFonts
            DirModelesUser
            DirMenuDemarrerPrgramme
            DirProgrammeAllUser
            DirDemarrageAllUser
            DirApplicationDataUser = 26
            DirVoisinageImpression
            DirLocalSettingsApplicationData
            DirFavorisAllUser = 31
            DirTemporaryInternetFilesUser
            DirCookiesUser
            DirHistoriqueUser
            DirApplicationDataAllUser
            DirWindows
            DirWindowsSystem32
            DirProgramFiles
            DirMesImagesUser
            DirUser
            DirFichiersCommuns = 43
            DirModeleAllUser = 45
            DirDocumentsPartages
            DirOutilsAdministrationAllUser
            DirOutilsAdministrationUser
            DirConnexionReseau
            DirMaMusiqueAllUser = 53
            DirMesImagesAllUser
            DirMesVideosAllUser
            DirRessources
            DirResources040c
            DirCDBurning = 59
            Dir
        End Enum

        Function BrowseAndCreate(ByVal hWnd As System.IntPtr, Optional ByVal Title As String = "Rechercher...", _
            Optional ByVal ConfigBox As ctConfigBrowse = ctConfigBrowse.ButtonOkCancelTextbox, _
            Optional ByVal ConfigDir As ctConfigDir = ctConfigDir.DirPosteDeTravail) As String
            Dim sResult As String = String.Empty
            '  CHOIX  REPERTOIRE
            Try
                Dim oShell As Object = CreateObject("Shell.Application")
                Dim oFolder As Object = oShell.BrowseForFolder(hWnd, Title, ConfigBox, CInt(ConfigDir))
                sResult = oFolder.items.Item.Path
                ' TEST LE RéSULTAT
                If sResult.Length = 0 OrElse sResult.Substring(0, 2) = "::" Then
                    Return String.Empty
                Else
                    Return sResult & IIf(sResult.Substring(sResult.Length - 1, 1) = "\", String.Empty, "\")
                End If
                oFolder = Nothing
                oShell = Nothing
            Catch ex As Exception
                Return String.Empty
            End Try
        End Function


        Private Sub ButParcourir_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButParcourir.Click
            AccueilAvRappel.Visible = False
            Dim a As System.IntPtr

            Chemin = BrowseAndCreate(a, "Rechercher...", ctConfigBrowse.ButtonOkCancelTextbox, ctConfigDir.DirPosteDeTravail)
            If Chemin.Equals("") Then
            Else
                TBChemin.Text = Chemin
            End If

        End Sub


    </code>

    Il marche impeccablement  sauf que je ne peux aller dans le réseau. Or il doit me servir pour aller dans n'importe quel dossier, même ceux du réseau (pour aller dans un dossier d'une base de données sur le réseau)

    Pourquoi je ne peux pas?

    Merci d'avance
    mercredi 24 septembre 2008 07:29

Réponses

  • Bonjour,

     

    Est-ce que vous connaissez le Control FolderBrowserDialog ?

    http://msdn.microsoft.com/en-us/library/system.windows.forms.folderbrowserdialog.aspx

    http://msdn.microsoft.com/en-us/library/system.windows.forms.folderbrowserdialog.rootfolder.aspx

    C'est en Anglais et pour la version .Net 3.5 mais vous trouverez en haut à droite le lien vers .Net 2.0 ( et vous pouvez changer la langue dans la barre de dialogue mais certaines pages n'ont pas été traduites ou mal , manque de temps pour une documentation immense )

    vous ajoutez dans votre form un control du type FolderBrowserDialog que vous pouvez appeler fbd

    fbd.RootFolder =  Environment.SpecialFolder.Desktop

    Dim ret As DialogResult = fbd.ShowDialog()

     

    Si vous voulez vraiment chercher un fichier , remplacer le FolderBrowserDialog par un OpenFileDialog ofd

    avec  ofd.InitialDialog = Environment.SpecialFolder.Desktop.ToString()

    ou pour être un puriste :

    ofd.InitialDialog = Enum.GetName(typeof(Environment.SpecialFolder),Environment.SpecialFolder.Desktop)

     

    parcontre je ne connais pas l'équivalent en VB du typeof  du VC#

    peut-être Environment.SpecialFolder.GetType() ( ça marche en VC# et n'utilise que des instrustions du Framework )

     

    J'gnore où vous avez trouvé ce code mais il me semble compliqué et peu évident à modifier

     

    N'hésitez pas à poster à nouveau pour des compléments ou pour affiner vôtre question

     

    Bonne journée

     

    mercredi 24 septembre 2008 10:32

Toutes les réponses

  • Bonjour,

     

    Dans votre Enum ctConfigDir, vous avez défini DirFavorisReseau mais sans valeur

     

    If faudrait arriver à utiliser cette valeur dans votre code ( j'ai trouvé une référence à DirPosteDeTravail mais pas à DirFavorisRéseau

     

    Au fait, pourquoi voulez-vous accéder au dossier d'une base de données sur le réseau et à quel genre de base de données faites vous allusion ?

     

    Nous attendons un peu plus d'information pour pouvoir essayer de vous aider plus efficacement ?

     

    Bonne journée

    mercredi 24 septembre 2008 08:58
  • Je veux accéder à un dossier contenant différentes choses : une bdd, un fichier texte, un dossier image.

    je veux avoir le chemin de tout cela, mais je veux que ce soit l'user qui choisisse le chemin, vu qu'on ne sait pas où cela sera du départ.

    mettre une valeur à DirFavorisRéseau? c'est-à-dire? Juste mettre un = 2 par exemple?
    mercredi 24 septembre 2008 09:11
  • Bonjour,

     

    Est-ce que vous connaissez le Control FolderBrowserDialog ?

    http://msdn.microsoft.com/en-us/library/system.windows.forms.folderbrowserdialog.aspx

    http://msdn.microsoft.com/en-us/library/system.windows.forms.folderbrowserdialog.rootfolder.aspx

    C'est en Anglais et pour la version .Net 3.5 mais vous trouverez en haut à droite le lien vers .Net 2.0 ( et vous pouvez changer la langue dans la barre de dialogue mais certaines pages n'ont pas été traduites ou mal , manque de temps pour une documentation immense )

    vous ajoutez dans votre form un control du type FolderBrowserDialog que vous pouvez appeler fbd

    fbd.RootFolder =  Environment.SpecialFolder.Desktop

    Dim ret As DialogResult = fbd.ShowDialog()

     

    Si vous voulez vraiment chercher un fichier , remplacer le FolderBrowserDialog par un OpenFileDialog ofd

    avec  ofd.InitialDialog = Environment.SpecialFolder.Desktop.ToString()

    ou pour être un puriste :

    ofd.InitialDialog = Enum.GetName(typeof(Environment.SpecialFolder),Environment.SpecialFolder.Desktop)

     

    parcontre je ne connais pas l'équivalent en VB du typeof  du VC#

    peut-être Environment.SpecialFolder.GetType() ( ça marche en VC# et n'utilise que des instrustions du Framework )

     

    J'gnore où vous avez trouvé ce code mais il me semble compliqué et peu évident à modifier

     

    N'hésitez pas à poster à nouveau pour des compléments ou pour affiner vôtre question

     

    Bonne journée

     

    mercredi 24 septembre 2008 10:32