Ouverture de répertoire dans Form MDI

Résolu
djay90 Messages postés 8 Date d'inscription mercredi 1 juillet 2015 Statut Membre Dernière intervention 9 septembre 2015 - 1 juil. 2015 à 10:55
 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

6 réponses

cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 137
1 juil. 2015 à 15:16
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

0
djay90 Messages postés 8 Date d'inscription mercredi 1 juillet 2015 Statut Membre Dernière intervention 9 septembre 2015
1 juil. 2015 à 17:18
Bonjour cs_Le Pivert et merci,
je test le code et je te donne un retour...
0
djay90 Messages postés 8 Date d'inscription mercredi 1 juillet 2015 Statut Membre Dernière intervention 9 septembre 2015
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.
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 137
1 juil. 2015 à 19:19
J'ai fait un explorateur avec une treview, si cela t'interesse:

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

@+
0
djay90 Messages postés 8 Date d'inscription mercredi 1 juillet 2015 Statut Membre Dernière intervention 9 septembre 2015 > djay90 Messages postés 8 Date d'inscription mercredi 1 juillet 2015 Statut Membre Dernière intervention 9 septembre 2015
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
0
glodylmg Messages postés 4 Date d'inscription mercredi 5 février 2014 Statut Membre Dernière intervention 2 juillet 2015
2 juil. 2015 à 07:34
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
0
djay90 Messages postés 8 Date d'inscription mercredi 1 juillet 2015 Statut Membre Dernière intervention 9 septembre 2015
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
0
djay90 Messages postés 8 Date d'inscription mercredi 1 juillet 2015 Statut Membre Dernière intervention 9 septembre 2015
9 sept. 2015 à 12:17
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.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
djay90 Messages postés 8 Date d'inscription mercredi 1 juillet 2015 Statut Membre Dernière intervention 9 septembre 2015
9 sept. 2015 à 12:18
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.
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 137
9 sept. 2015 à 14:20
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
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 137
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
0
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
0
Rejoignez-nous