Bonjour,

J'ai crée un menu à l'aide d'un ToolStripMenuItem qui permet de parcourir un répertoire et d'afficher les dossiers et fichiers. Ce que je cherche à faire et de lancer une action lorsque l'on clique sur un élément qui est un fichier (lancer une Sub par exemple). Malheureusement, je n'arrive pas à m'en sortir...

Voici mon code :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
ListerLesRepertoire("D:\TEST"), Nothing)

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
Public Sub ListerLesRepertoire(ByVal Rep As String, ByVal Parent As ToolStripMenuItem)
        Try
            'Récupère la liste des entrées du répertoire
            Dim Liste As String() = Directory.GetFileSystemEntries(Rep)
            Dim Entree As String
 
            For Each Entree In Liste 'Pour chaque entrée de la liste
                Dim TmpName As String = Microsoft.VisualBasic.Mid(Entree, Len(Rep) + 1) 'On découpe proprement le nom du fichier ou répertoire
                TmpName = Microsoft.VisualBasic.Replace(TmpName, "\", "") 'On enlève les caractères parasites !
 
                If File.Exists(Entree) Then     'Si c'est un fichier
                    AddNode(TmpName, True, Parent)  
                Else    'Si  c'est un répertoire
                    Dim TmpNode As ToolStripMenuItem 'Var tempo pour sauver le noeud
                    TmpNode = AddNode(TmpName, False, Parent) 'On ajoute le rep
                    ListerLesRepertoire(Entree, TmpNode) 'On liste le contenus de ce répertoire
                End If
            Next Entree
        Catch Ex As System.UnauthorizedAccessException 'si le répertoire est protégé
            Exit Sub
        Catch e As Exception 'en cas d'erreurs
            MsgBox("Erreur : " & e.Message, MsgBoxStyle.Critical)
        End Try
    End 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
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
   Private Function AddNode(ByVal StrNom As String, ByVal BlFile As Boolean, ByVal Parent As ToolStripMenuItem) As ToolStripMenuItem
        Try
            Dim TmpNode As ToolStripMenuItem      
 
            If Not Parent Is Nothing Then ' Si Parent n'est pas à nothing 
 
                ' Cas d'un fichier (et non un dossier)
                If BlFile Then
                    ' Cas d'une machine
                    Dim no As New ToolStripMenuItem("", Nothing, New EventHandler(AddressOf pouet))
                    no.Text = StrNom.Remove((Len(StrNom) - 4), 4)
                    no.Image = Global.GECOSSH.My.Resources.Resources.ico_ordi
 
                    Parent.DropDownItems.Insert(0, no)
                    TmpNode = no
                Else
                    ' Cas d'un dossier
                    Dim no As New ToolStripMenuItem
                    no.Text = StrNom
                    no.Image = Global.GECOSSH.My.Resources.Resources.ico_dossier
 
                    Parent.DropDownItems.Insert(0, no)
                    TmpNode = no
                End If
 
            Else ' Si Parent Est à nothing c sans doute le premier élément du treeview ou une racine
 
                If BlFile Then
                    ' Cas d'une machine
                    Dim no As New ToolStripMenuItem("", Nothing, New EventHandler(AddressOf pouet))
                    no.Text = StrNom.Remove((Len(StrNom) - 4), 4)
                    no.Image = Global.GECOSSH.My.Resources.Resources.ico_ordi
 
                    ServeursToolStripMenuItem1.DropDownItems.Insert(0, no)
                    TmpNode = no
                Else
                    ' Cas d'un dossier
                    Dim no As New ToolStripMenuItem()
                    no.Text = StrNom
                    no.Image = Global.GECOSSH.My.Resources.Resources.ico_dossier
 
                    ServeursToolStripMenuItem1.DropDownItems.Insert(0, no)
                    TmpNode = no
                End If
 
            End If
 
            Application.DoEvents()  
            Return TmpNode
        Catch ex As Exception
            Return Nothing
            MsgBox(ex.ToString)
        End Try
    End Function
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
    Private Sub pouet(ByVal sender As System.Object, ByVal e As System.EventArgs)
 
        MsgBox(e.ToString)
 
    End Sub
Pour le moment j'arrive juste à afficher une boite de message avec le nom du fichier, mais j'aimerais pouvoir lancer une Sub avec plus de paramètres... Et je trouve absolument pas comment faire

Vous avez une idée ?


Merci.