Voici une façon de le charger dynamiquement sous forme de menu : '*** Option Explicit On
Imports System.Xml
Public Class Form1 Inherits System.Windows.Forms.Form
' Code généré par le Concepteur Windows Form
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Me.Menu = CreateMainMenu("c:menu.xml", New EventHandler(AddressOf MenuItem_Click))
End Sub
Private Function CreateMainMenu(ByVal FilePath As String, ByVal delMenutItemClick As EventHandler) As MainMenu
Dim xd As New XmlDocument xd.Load(FilePath)
Dim mm As New MainMenu mm.MenuItems.Add(GetMenuItem(xd.DocumentElement, delMenutItemClick)) Return mm
End Function
Private Function GetMenuItem(ByVal xn As XmlNode, ByVal delMenutItemClick As EventHandler) As MenuItem
' détermine le nom de l'élément Dim sName As String Dim xa As XmlAttribute = xn.Attributes("nom") If (xa Is Nothing) Then sName = xn.Name Else sName = xa.Value End If
' créer l'item de menu Dim mi As New MenuItem(sName) ' branche l'événement Click de l'item à notre déléguée AddHandler mi.Click, delMenutItemClick
' rappelle la méthode récursivement pour créer les enfants For Each xcn As XmlNode In xn.ChildNodes mi.MenuItems.Add(GetMenuItem(xcn, delMenutItemClick)) Next
Return mi
End Function
Private Sub MenuItem_Click(ByVal sender As Object, ByVal e As System.EventArgs)
If ((Not sender Is Nothing) AndAlso (sender.GetType() Is GetType(MenuItem))) Then MessageBox.Show(DirectCast(sender, MenuItem).Text) End If
End Sub
End Class '***
-- Cordialement Yanick MVP pour Visual Basic "Denis" a écrit dans le message de news:
Bonjour à tous,
Je souhaite construire un menu à partir d'un fichier XML.
Ce menu devra se construire dynamiquement en fonction des données XML
Voici un exemple de ce qui pourrait apparaitre ("Etats" étant le bouton visible dans la barre de menu)
Voici une façon de le charger dynamiquement sous forme de menu :
'***
Option Explicit On
Imports System.Xml
Public Class Form1
Inherits System.Windows.Forms.Form
' Code généré par le Concepteur Windows Form
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load
Me.Menu = CreateMainMenu("c:menu.xml", New EventHandler(AddressOf
MenuItem_Click))
End Sub
Private Function CreateMainMenu(ByVal FilePath As String, ByVal
delMenutItemClick As EventHandler) As MainMenu
Dim xd As New XmlDocument
xd.Load(FilePath)
Dim mm As New MainMenu
mm.MenuItems.Add(GetMenuItem(xd.DocumentElement, delMenutItemClick))
Return mm
End Function
Private Function GetMenuItem(ByVal xn As XmlNode, ByVal
delMenutItemClick As EventHandler) As MenuItem
' détermine le nom de l'élément
Dim sName As String
Dim xa As XmlAttribute = xn.Attributes("nom")
If (xa Is Nothing) Then
sName = xn.Name
Else
sName = xa.Value
End If
' créer l'item de menu
Dim mi As New MenuItem(sName)
' branche l'événement Click de l'item à notre déléguée
AddHandler mi.Click, delMenutItemClick
' rappelle la méthode récursivement pour créer les enfants
For Each xcn As XmlNode In xn.ChildNodes
mi.MenuItems.Add(GetMenuItem(xcn, delMenutItemClick))
Next
Return mi
End Function
Private Sub MenuItem_Click(ByVal sender As Object, ByVal e As
System.EventArgs)
If ((Not sender Is Nothing) AndAlso (sender.GetType() Is
GetType(MenuItem))) Then
MessageBox.Show(DirectCast(sender, MenuItem).Text)
End If
End Sub
End Class
'***
--
Cordialement
Yanick
MVP pour Visual Basic
"Denis" <Denis@discussions.microsoft.com> a écrit dans le message de
news:D8B0268C-3BC9-4D9B-A176-99DC6639300D@microsoft.com...
Bonjour à tous,
Je souhaite construire un menu à partir d'un fichier XML.
Ce menu devra se construire dynamiquement en fonction des données XML
Voici un exemple de ce qui pourrait apparaitre ("Etats" étant le bouton
visible dans la barre de menu)
Voici une façon de le charger dynamiquement sous forme de menu : '*** Option Explicit On
Imports System.Xml
Public Class Form1 Inherits System.Windows.Forms.Form
' Code généré par le Concepteur Windows Form
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Me.Menu = CreateMainMenu("c:menu.xml", New EventHandler(AddressOf MenuItem_Click))
End Sub
Private Function CreateMainMenu(ByVal FilePath As String, ByVal delMenutItemClick As EventHandler) As MainMenu
Dim xd As New XmlDocument xd.Load(FilePath)
Dim mm As New MainMenu mm.MenuItems.Add(GetMenuItem(xd.DocumentElement, delMenutItemClick)) Return mm
End Function
Private Function GetMenuItem(ByVal xn As XmlNode, ByVal delMenutItemClick As EventHandler) As MenuItem
' détermine le nom de l'élément Dim sName As String Dim xa As XmlAttribute = xn.Attributes("nom") If (xa Is Nothing) Then sName = xn.Name Else sName = xa.Value End If
' créer l'item de menu Dim mi As New MenuItem(sName) ' branche l'événement Click de l'item à notre déléguée AddHandler mi.Click, delMenutItemClick
' rappelle la méthode récursivement pour créer les enfants For Each xcn As XmlNode In xn.ChildNodes mi.MenuItems.Add(GetMenuItem(xcn, delMenutItemClick)) Next
Return mi
End Function
Private Sub MenuItem_Click(ByVal sender As Object, ByVal e As System.EventArgs)
If ((Not sender Is Nothing) AndAlso (sender.GetType() Is GetType(MenuItem))) Then MessageBox.Show(DirectCast(sender, MenuItem).Text) End If
End Sub
End Class '***
-- Cordialement Yanick MVP pour Visual Basic "Denis" a écrit dans le message de news:
Bonjour à tous,
Je souhaite construire un menu à partir d'un fichier XML.
Ce menu devra se construire dynamiquement en fonction des données XML
Voici un exemple de ce qui pourrait apparaitre ("Etats" étant le bouton visible dans la barre de menu)
Voici une façon de le charger dynamiquement sous forme de menu : '*** Option Explicit On
Imports System.Xml
Public Class Form1 Inherits System.Windows.Forms.Form
' Code généré par le Concepteur Windows Form
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Me.Menu = CreateMainMenu("c:menu.xml", New EventHandler(AddressOf MenuItem_Click))
End Sub
Private Function CreateMainMenu(ByVal FilePath As String, ByVal delMenutItemClick As EventHandler) As MainMenu
Dim xd As New XmlDocument xd.Load(FilePath)
Dim mm As New MainMenu mm.MenuItems.Add(GetMenuItem(xd.DocumentElement, delMenutItemClick)) Return mm
End Function
Private Function GetMenuItem(ByVal xn As XmlNode, ByVal delMenutItemClick As EventHandler) As MenuItem
' détermine le nom de l'élément Dim sName As String Dim xa As XmlAttribute = xn.Attributes("nom") If (xa Is Nothing) Then sName = xn.Name Else sName = xa.Value End If
' créer l'item de menu Dim mi As New MenuItem(sName) ' branche l'événement Click de l'item à notre déléguée AddHandler mi.Click, delMenutItemClick
' rappelle la méthode récursivement pour créer les enfants For Each xcn As XmlNode In xn.ChildNodes mi.MenuItems.Add(GetMenuItem(xcn, delMenutItemClick)) Next
Return mi
End Function
Private Sub MenuItem_Click(ByVal sender As Object, ByVal e As System.EventArgs)
If ((Not sender Is Nothing) AndAlso (sender.GetType() Is GetType(MenuItem))) Then MessageBox.Show(DirectCast(sender, MenuItem).Text) End If
End Sub
End Class '***
-- Cordialement Yanick MVP pour Visual Basic "Denis" a écrit dans le message de news: > Bonjour à tous, > > Je souhaite construire un menu à partir d'un fichier XML. > > Ce menu devra se construire dynamiquement en fonction des données XML > > Voici un exemple de ce qui pourrait apparaitre ("Etats" étant le bouton > visible dans la barre de menu) > > Etats > | > +Satistique > | +Etat 1 > | +Etat 2 > | +Etat 3 > | +Sous Etat 1 > | +Sous Etat 2 > +Bilan > | +Bilan 1 > | +Bilan 2 > +Synthèse > > Est-ce quelqu'un aurait des exemples de code et de fichier XML à me proposer > pour construire mon menu ? > > Aloha, 2nis > >
Merci pour cet exemple qui me semble parfait,
je m'en vais l'essayer
Voici une façon de le charger dynamiquement sous forme de menu :
'***
Option Explicit On
Imports System.Xml
Public Class Form1
Inherits System.Windows.Forms.Form
' Code généré par le Concepteur Windows Form
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load
Me.Menu = CreateMainMenu("c:menu.xml", New EventHandler(AddressOf
MenuItem_Click))
End Sub
Private Function CreateMainMenu(ByVal FilePath As String, ByVal
delMenutItemClick As EventHandler) As MainMenu
Dim xd As New XmlDocument
xd.Load(FilePath)
Dim mm As New MainMenu
mm.MenuItems.Add(GetMenuItem(xd.DocumentElement, delMenutItemClick))
Return mm
End Function
Private Function GetMenuItem(ByVal xn As XmlNode, ByVal
delMenutItemClick As EventHandler) As MenuItem
' détermine le nom de l'élément
Dim sName As String
Dim xa As XmlAttribute = xn.Attributes("nom")
If (xa Is Nothing) Then
sName = xn.Name
Else
sName = xa.Value
End If
' créer l'item de menu
Dim mi As New MenuItem(sName)
' branche l'événement Click de l'item à notre déléguée
AddHandler mi.Click, delMenutItemClick
' rappelle la méthode récursivement pour créer les enfants
For Each xcn As XmlNode In xn.ChildNodes
mi.MenuItems.Add(GetMenuItem(xcn, delMenutItemClick))
Next
Return mi
End Function
Private Sub MenuItem_Click(ByVal sender As Object, ByVal e As
System.EventArgs)
If ((Not sender Is Nothing) AndAlso (sender.GetType() Is
GetType(MenuItem))) Then
MessageBox.Show(DirectCast(sender, MenuItem).Text)
End If
End Sub
End Class
'***
--
Cordialement
Yanick
MVP pour Visual Basic
"Denis" <Denis@discussions.microsoft.com> a écrit dans le message de
news:D8B0268C-3BC9-4D9B-A176-99DC6639300D@microsoft.com...
> Bonjour à tous,
>
> Je souhaite construire un menu à partir d'un fichier XML.
>
> Ce menu devra se construire dynamiquement en fonction des données XML
>
> Voici un exemple de ce qui pourrait apparaitre ("Etats" étant le bouton
> visible dans la barre de menu)
>
> Etats
> |
> +Satistique
> | +Etat 1
> | +Etat 2
> | +Etat 3
> | +Sous Etat 1
> | +Sous Etat 2
> +Bilan
> | +Bilan 1
> | +Bilan 2
> +Synthèse
>
> Est-ce quelqu'un aurait des exemples de code et de fichier XML à me
proposer
> pour construire mon menu ?
>
> Aloha, 2nis
>
>
Voici une façon de le charger dynamiquement sous forme de menu : '*** Option Explicit On
Imports System.Xml
Public Class Form1 Inherits System.Windows.Forms.Form
' Code généré par le Concepteur Windows Form
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Me.Menu = CreateMainMenu("c:menu.xml", New EventHandler(AddressOf MenuItem_Click))
End Sub
Private Function CreateMainMenu(ByVal FilePath As String, ByVal delMenutItemClick As EventHandler) As MainMenu
Dim xd As New XmlDocument xd.Load(FilePath)
Dim mm As New MainMenu mm.MenuItems.Add(GetMenuItem(xd.DocumentElement, delMenutItemClick)) Return mm
End Function
Private Function GetMenuItem(ByVal xn As XmlNode, ByVal delMenutItemClick As EventHandler) As MenuItem
' détermine le nom de l'élément Dim sName As String Dim xa As XmlAttribute = xn.Attributes("nom") If (xa Is Nothing) Then sName = xn.Name Else sName = xa.Value End If
' créer l'item de menu Dim mi As New MenuItem(sName) ' branche l'événement Click de l'item à notre déléguée AddHandler mi.Click, delMenutItemClick
' rappelle la méthode récursivement pour créer les enfants For Each xcn As XmlNode In xn.ChildNodes mi.MenuItems.Add(GetMenuItem(xcn, delMenutItemClick)) Next
Return mi
End Function
Private Sub MenuItem_Click(ByVal sender As Object, ByVal e As System.EventArgs)
If ((Not sender Is Nothing) AndAlso (sender.GetType() Is GetType(MenuItem))) Then MessageBox.Show(DirectCast(sender, MenuItem).Text) End If
End Sub
End Class '***
-- Cordialement Yanick MVP pour Visual Basic "Denis" a écrit dans le message de news: > Bonjour à tous, > > Je souhaite construire un menu à partir d'un fichier XML. > > Ce menu devra se construire dynamiquement en fonction des données XML > > Voici un exemple de ce qui pourrait apparaitre ("Etats" étant le bouton > visible dans la barre de menu) > > Etats > | > +Satistique > | +Etat 1 > | +Etat 2 > | +Etat 3 > | +Sous Etat 1 > | +Sous Etat 2 > +Bilan > | +Bilan 1 > | +Bilan 2 > +Synthèse > > Est-ce quelqu'un aurait des exemples de code et de fichier XML à me proposer > pour construire mon menu ? > > Aloha, 2nis > >