[VB.NET] Action sur menu ToolStripMenuItem
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:
ListerLesRepertoire("D:\TEST"), Nothing)
Code:
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:
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:
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.