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 FunctionPour 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
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
Vous avez une idée ?
Merci.
Partager