Ouverture de répertoire dans Form MDI [Résolu]

djay90 8 Messages postés mercredi 1 juillet 2015Date d'inscription 9 septembre 2015 Dernière intervention - 1 juil. 2015 à 10:55 - Dernière réponse :  djay90
- 10 août 2017 à 14:48
Bonjour à tous,

je suis novice en programmation visual basic 2012, je réalise un programme qui doit ouvrir un répertoire dans un Form MDI.
J'arrive a ouvrir des nouvelles Form dans le Form MDI, mais pas la fenêtre du répertoire qui s'ouvre toujours à l'extérieur du Form MDI.
Depuis 1 semaine je cherche sur le net mais je ne trouve que des exemples d'ouverture de fichier PDF, TXT etc... mais pas avec des répertoires.
Quelqu'un pourrai m'apporter une aide, un bout de code, un tuto ou une autre façon de faire?
EN vous remerciant d'avance.

Djay
Afficher la suite 

13 réponses

Répondre au sujet
cs_Le Pivert 4770 Messages postés jeudi 13 septembre 2007Date d'inscriptionContributeurStatut 14 décembre 2017 Dernière intervention - 1 juil. 2015 à 15:16
0
Utile
2
Bonjour,

tu peux ouvrir un dossier et afficher les fichiers qu'il contient dans une listBox, comme ceci:

Option Strict On
Imports System.IO
Public Class Form1
    Dim chemin As String
    Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
        Dim opendir As New FolderBrowserDialog
        With opendir
            .ShowNewFolderButton = False
            .RootFolder = Environment.SpecialFolder.MyDocuments
            If .ShowDialog = Windows.Forms.DialogResult.OK Then
                Dim di As New IO.DirectoryInfo(.SelectedPath)
                chemin = .SelectedPath
                Dim extFi As IO.FileInfo() = di.GetFiles("*.*") 'filtrer les fichiers
                Dim fi As IO.FileInfo
                For Each fi In extFi
                    ListBox1.Items.Add(fi.Name) 'affiche les noms avec extension

                    'ListBox1.Items.Add(fi.Name.Replace(fi.Extension, ""))'affiche les noms sans extension
                Next
            Else
                MessageBox.Show("Operation annulée par l'utilisateur!", "Ouverture dossier", MessageBoxButtons.OK, MessageBoxIcon.Information)
            End If
            .Dispose()
        End With
    End Sub
    'récupérer chemin complet en cliquant dans la listBox
    Private Sub ListBox1_SelectedIndexChanged(sender As System.Object, e As System.EventArgs) Handles ListBox1.SelectedIndexChanged
        MsgBox(chemin & "\" & ListBox1.SelectedItem.ToString)
    End Sub
End Class

djay90 8 Messages postés mercredi 1 juillet 2015Date d'inscription 9 septembre 2015 Dernière intervention - 1 juil. 2015 à 17:18
Bonjour cs_Le Pivert et merci,
je test le code et je te donne un retour...
djay90 8 Messages postés mercredi 1 juillet 2015Date d'inscription 9 septembre 2015 Dernière intervention - 1 juil. 2015 à 18:23
Malheureusement ça ne fonctionne pas, lorsque la boîte de dialogue s'ouvre, je sélectionne le répertoire et le programme se referme.

Le programme que je suis entrain de réaliser en visual studio lance un sous programme exécutable de tri de fichier.
Pour ce tri, j'ai besoin d'ouvrir avec visual une fenêtre donnant dans le répertoire où se trouve les fichiers a trier avec 3 autres sous répertoires.
La fenêtre a ouvrir me sert juste à faire glisser les fichiers à trier dans l'un de ces 3 sous répertoires jusqu'à ce qu'il n'y ai plus de fichier et non a sélectionner les fichiers pour les ouvrir.
Ainsi lorsque je fait :

Process.Start("C:/Users/repertoire")

la fenêtre s'ouvre correctement sur le répertoire en question mais elle s'ouvre à l'extérieur de la Form1 MDI Parent que j'ai créé, alors que je souhaiterai que la fenêtre soit contenue dans Form1 MDI.

Après le tri je referme la fenêtre par une commande de menu déroulant déjà créé.

A ce stade, j'ai simplement réussit a ouvrir une autre Form enfant, sans rien dessus, dans Form1 Parent.

En espérant que cela puisse renseigner d'avantage le problème qui se pose.

Merci d'avance.
Commenter la réponse de cs_Le Pivert
cs_Le Pivert 4770 Messages postés jeudi 13 septembre 2007Date d'inscriptionContributeurStatut 14 décembre 2017 Dernière intervention - 1 juil. 2015 à 19:19
0
Utile
2
J'ai fait un explorateur avec une treview, si cela t'interesse:

http://www.cjoint.com/c/EGbrr6ZcFuQ
djay90 8 Messages postés mercredi 1 juillet 2015Date d'inscription 9 septembre 2015 Dernière intervention - 1 juil. 2015 à 19:49
Merci, je regarde de plus près...

@+
djay90 8 Messages postés mercredi 1 juillet 2015Date d'inscription 9 septembre 2015 Dernière intervention > djay90 8 Messages postés mercredi 1 juillet 2015Date d'inscription 9 septembre 2015 Dernière intervention - 2 juil. 2015 à 16:51
Bonjour Le Pivert et merci pour la Treeview,
pour ce cas ça ne marche pas car c'est une image du répertoire à l'instant t, si ce répertoire se modifie il faut rafraichir.
Par contre ça me sera utile pour une autre application.
Je continu de chercher avec le code de glodylmg.
J'afficherai la solution lorsque j'aurai trouvé la solution.
Si tu as d'autre idées sur la gestion de lancement d'une fenêtre de windows je suis preneur.
Merci encore.

Djay
Commenter la réponse de cs_Le Pivert
glodylmg 4 Messages postés mercredi 5 février 2014Date d'inscription 2 juillet 2015 Dernière intervention - 2 juil. 2015 à 07:34
0
Utile
1
Bonjour Djay essai avec ce code

Private Sub OpenFile(ByVal sender As Object, ByVal e As EventArgs) Handles OpenToolStripMenuItem.Click, OpenToolStripButton.Click

Dim OpenFileDialog As New OpenFileDialog
OpenFileDialog.InitialDirectory = My.Computer.FileSystem.SpecialDirectories.MyDocuments

End Sub
djay90 8 Messages postés mercredi 1 juillet 2015Date d'inscription 9 septembre 2015 Dernière intervention - 2 juil. 2015 à 18:30
Bonjour glodylmg,
merci pour le code, mais la fenêtre ne s'ouvre pas d'elle même.
J'essaie de rajouter le lancement de la fenêtre avec

Dim OpenFileDialog As New OpenFileDialog
OpenFileDialog.InitialDirectory = My.Computer.FileSystem.SpecialDirectories.MyDocuments

Dim dialog = OpenFileDialog.InitialDirectory

Process.Start(dialog)

La fenêtre s'ouvre sur le répertoire Mes documents, jusque là tous va bien mais la fenêtre s'ouvre à l'extérieur du Form MDI Parent.

Si je continu le code

If Process.Start(dialog) = System.Windows.Forms.Form Then
Dim frm As System.Windows.Forms.Form
frm.MDIParent = Me
frm.Show()

End If

il ne prend pas en compte "System.Windows.Forms.Form" et me demande de généune Class Form.

J'ai chercher la journée et Je ne vois pas comment faire ni comment gérer la fenêtre ouvrant sur le répertoire Mes documents.

Si tu pouvais me donner un coup de main, je te remercie.

Djay
Commenter la réponse de glodylmg
djay90 8 Messages postés mercredi 1 juillet 2015Date d'inscription 9 septembre 2015 Dernière intervention - 9 sept. 2015 à 12:17
0
Utile
Bonjour à tous,

merci pour toute les pistes qui m'ont permis de trouver une solution provisoire.

Mon choix c'est tourné sur une ListeView avec SmallImageList.

Ainsi, j'ai créé un Form MDI dans lequel j'insère 1 Form child.

Ce Form child accueille une ListeView avec SmallImageList (icônes des fichiers a traiter).

La ListeView est en affichage "détail" contenant les colonnes du Nom, Type et Taille du fichier.

Je créé une fonction "mise à jour" et j'intègre un FileSystemWatcher sur le répertoire que je veux scruté. Ainsi, lorsque des fichiers se présentent dans le répertoire, le FileSystemWatcher déclenche la mise à jour de la ListeView qui m'affiche la liste des fichiers présent a traiter.

Mon programme n'est pas encore terminé mais il avance à grand pas grâce à vos suggestions.

Je vous en remercie très chaleureusement.
Commenter la réponse de djay90
djay90 8 Messages postés mercredi 1 juillet 2015Date d'inscription 9 septembre 2015 Dernière intervention - 9 sept. 2015 à 12:18
0
Utile
Pour la poursuite de de mon programme je souhaite faire un copier, collé, effacé, renommé sur chaque fichier de la ListView. J'ai créé un ContextMenuStrip (avec son menu déroulant) que j'ai affilié à la ListView (dans les propriétés de ListView dans le menu déroulant j'attribue le ContextMenuStrip créé).

Mon soucis actuellement est d'effectuer la fonction "copier" dans le presse papier (Clipboard) avec Clipboard.SetFileDropList, mais sans résultats.

Mon code est le suivant:

Dim list As System.Collections.Specialized.StringCollection

list = My.Computer.FileSystem.GetFiles("C:\mon\fichier\toto.ext")
Dim listReader As New System.Collections.Specialized.StringCollection
listReader.Add(item\de listview)

My.Computer.Clipboard.SetFileDropList("C:\mon\fichier\toto.ext")

Pour la ligne : list = My.Computer.FileSystem.GetFiles("C:\mon\fichier\toto.ext") il ne peut pas prendre l'adresse du fichier à copier dans presse papier car c'est un String.

Quelqu'un pourrai m'aider sur la commande Clipboard.SetFileDropList pour copier un fichier présent dans un répertoire (et non le nom du fichier en txt).

En vous remerciant d'avance.
Commenter la réponse de djay90
cs_Le Pivert 4770 Messages postés jeudi 13 septembre 2007Date d'inscriptionContributeurStatut 14 décembre 2017 Dernière intervention - 9 sept. 2015 à 14:20
0
Utile
2
Pour le copier, déplacer et supprimer d'un fichier. Cela ne passe pas par le Clipboard.
Il y a des méthodes faites pour cela:

https://msdn.microsoft.com/en-us/library/ms127964(v=vs.110).aspx

Voilà un exemple avec listview:

http://codes-sources.commentcamarche.net/source/50894-listview-tri-extensions
cs_Le Pivert 4770 Messages postés jeudi 13 septembre 2007Date d'inscriptionContributeurStatut 14 décembre 2017 Dernière intervention - 9 sept. 2015 à 14:56
Regarde cela, tu as tout ce qui concerne ta demande:

http://plasserre.developpez.com/cours/vb-net/?page=langage-vb8#LV-AC-2
Bonjour cs_Le_Pivert,
désolé pour le retard de remerciement je viens de voir tes 2 derniers messages.
Encore merci pour toute l'aide que tu m'as apporté.

Djay90
Commenter la réponse de cs_Le Pivert

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.