IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

XML & Treeview


Sujet :

VB.NET

  1. #21
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2012
    Messages : 33
    Par défaut
    oui bien sure déjà tous les codes vont êtres adaptés avec le reste de mon application , bref se qui me gène vraiment c'est la relation entre VB et XML et les trucs comme ça et l’appellation ... jé déja une autre forme avec XML mais maintenant c'est un menu dynamique pas de Treeview

  2. #22
    Membre émérite Avatar de -N4w4k-
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2011
    Messages
    545
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2011
    Messages : 545
    Par défaut
    Citation Envoyé par rabso007 Voir le message
    bref se qui me gène vraiment c'est la relation entre VB et XML
    Pour ça il y a plusieurs méthodes comme la serialisation qui permet de charger des fichiers xml dans des objets (classes) qui correspondent aux balises xml (jettes un coup d'oeil aux classes Groupes, Groupe, Menu et SousMenu). Du coup juste avec les méthodes Serialize() et Deserialize() je charge et sauvegarde les données xml. Tu peux aussi regarder du coté du cours de Philippe Lasserre qui est vraiment complet.

    A+

  3. #23
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2012
    Messages : 33
    Par défaut
    ok je va les voire , merci une autre fois

  4. #24
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2012
    Messages : 33
    Par défaut
    désoler mais j'ai un question , es-que c'est possible de créer un menue dynamique à la base de la fichier Menu.XML selon le groupe qui a été déja choisi dans un autre forme ??
    parseque j'ai fais des essaies avec une simple fichier.xml qui contient le code suivant et cava bien marché , mais quand j'essaie avec le fichier Menu.XML sa marche pas
    Code xml : 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
     
     <root>
      <TopLevelMenu id="&amp;File">
        <MenuItem id = "New" OnClick="_New"/>
        <MenuItem id = "Open"/>
        <MenuItem id = "Send To">
          <MenuItem id ="Mail"/>
          <MenuItem id ="My Documents"/>
        </MenuItem>
      </TopLevelMenu>
      <TopLevelMenu id="&amp;Edit">
        <MenuItem id = "Copy"/>
        <MenuItem id = "Paste" OnClick="_Paste"/>
        <MenuItem id = "Clear">
          <MenuItem id = "F&amp;ormats"/>
          <MenuItem id ="Contents">
            <MenuItem id = "Test" OnClick="_Test"/>
          </MenuItem>
        </MenuItem>
      </TopLevelMenu>
    </root>

  5. #25
    Membre émérite Avatar de -N4w4k-
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2011
    Messages
    545
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2011
    Messages : 545
    Par défaut
    Citation Envoyé par rabso007 Voir le message
    quand j'essaie avec le fichier Menu.XML sa marche pas
    Tu peux nous montrer le code utilisé?

  6. #26
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2012
    Messages : 33
    Par défaut
    j'ai gardé le même code que j'ai utilisé pour appelé le menu précédent

    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
     
     
    Public Class Form1
        Inherits System.Windows.Forms.Form
     
        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            Dim objMenu As New DynamicMenu()
            objMenu.XMLMenuFile = "E:\WindowsApplication1\menu.xml"
            objMenu.objForm = Me
            Me.Menu = objMenu.LoadDynamicMenu()
        End Sub
     
        'whenever user clicks New Menu Item - the below event will get triggered
        Private Sub MenuItemOnClick_New(ByVal sender As Object, ByVal e As System.EventArgs)
            MessageBox.Show("New Clicked")
        End Sub
     
     
    End Class
    et la classe suivante
    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
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
     
    Public Class DynamicMenu
        ''''''''''''''''''''''variable declarations begins''''''''''''''''''''''''''''
        'Create a main menu object.
        Private mainMenu As New mainMenu()
        'Object for loading XML File
        Private objXML As Xml.XmlDocument
        ' Create menu item objects.
        Private mItem As New MenuItem()
        'Menu handle that should be returned
        Private objMenu As Menu
        'Path of the XML Menu Configuration File 
        Public XMLMenuFile As String
        'Form Object in which Menu has to be build
        Public objForm As Object
        ''''''''''''''''''''''variable declarations ends '''''''''''''''''''''''''''''
     
        ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
        'This method will get invoked by a parent Form.
        'And it returns Menu Object.
        ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
        Public Function LoadDynamicMenu() As MainMenu
            Dim oXmlElement As Xml.XmlElement
            Dim objNode As Xml.XmlNode
     
            objXML = New Xml.XmlDocument()
            'load the XML File
            objXML.Load(XMLMenuFile)
            'Get the documentelement of the XML file.
            oXmlElement = CType(objXML.DocumentElement, Xml.XmlElement)
            'loop through the each Top level nodes
            'For ex., File & Edit becomes Top Level nodes
            'And File -> Open , File ->Save will be treated as 
            'child for the Top Level Nodes
            For Each objNode In objXML.FirstChild.ChildNodes
                'Create a New MenuItem for Top Level Nodes
                mItem = New MenuItem()
                ' Set the caption of the menu items.
                mItem.Text = objNode.Attributes("id").Value
                ' Add the menu items to the main menu.
                mainMenu.MenuItems.Add(mItem)
                'Call this Method to generate child nodes for
                'the top level node which was added now(mItem in the above Add statement)
                GenerateMenusFromXML(objNode, mainMenu.MenuItems(mainMenu.MenuItems.Count - 1))
            Next
            'return this Menu handle to the parent Form so that
            'generated menu gets displayed in the Form
            Return objMenu
        End Function
     
        ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
        'This method takes care of loading Menus based on XML file contents. 
        ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
        Private Sub GenerateMenusFromXML(ByVal objNode As Xml.XmlNode, ByVal mItm As MenuItem)
            'This method will be invoked in an recursive fashion
            'till all the child nodes are generated. This method
            'drills up to N-levels to generate all the Child nodes
            Dim objNod As Xml.XmlNode
            Dim sMenu As New MenuItem()
            'loop for child nodes
            For Each objNod In objNode.ChildNodes
                sMenu = New MenuItem()
                ' Set the caption of the menu items.
                sMenu.Text = objNod.Attributes("id").Value
                mItm.MenuItems.Add(sMenu)
                'Add a Event handler to the menu item added
                'this method takes care of Binding Event Name(based on the parameter from
                'from xml file) to newly added menu item.
                'for ex., Your Form Code should have a Private sub MenuItemOnClick_New even to handle
                'the click of New Menu Item
                If Not objNod.Attributes("OnClick") Is Nothing Then
                    FindEventsByName(sMenu, objForm, True, "MenuItemOn", objNod.Attributes("OnClick").Value)
                End If
                'call the same method to see you have any child nodes
                'for the particular node you have added now(above mItm)
                GenerateMenusFromXML(objNod, mItm.MenuItems(mItm.MenuItems.Count - 1))
            Next
            'assign the generated mainMenu object to objMenu - public object
            'which is to be used in the Main Form
            objMenu = mainMenu
        End Sub
     
        ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
        'objective of this method is to find out the private event present in Form 
        'and attach the newly added menuitem to this event, this was achieved using
        'Reflection technique
        ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
        Private Sub FindEventsByName(ByVal sender As Object, ByVal receiver As Object, ByVal bind As Boolean, ByVal handlerPrefix As String, ByVal handlerSufix As String)
            ' Get the sender's public events.
            Dim SenderEvents() As System.Reflection.EventInfo = sender.GetType().GetEvents()
            ' Get the receiver's type and lookup its public
            ' methods matching the naming convention:
            '  handlerPrefix+Click+handlerSufix
            Dim ReceiverType As Type = receiver.GetType()
            Dim E As System.Reflection.EventInfo
            Dim Method As System.Reflection.MethodInfo
            For Each E In SenderEvents
                Method = ReceiverType.GetMethod( _
                  handlerPrefix & E.Name & handlerSufix, _
                  System.Reflection.BindingFlags.IgnoreCase Or _
                  System.Reflection.BindingFlags.Instance Or _
                  System.Reflection.BindingFlags.NonPublic)
     
                If Not Method Is Nothing Then
                    Dim D As System.Delegate = System.Delegate.CreateDelegate(E.EventHandlerType, receiver, Method.Name)
                    If bind Then
                        'add the event handler
                        E.AddEventHandler(sender, D)
                    Else
                        'you can also remove the event handler if you pass bind variable as false
                        E.RemoveEventHandler(sender, D)
                    End If
                End If
            Next
        End Sub
    End Class

  7. #27
    Membre émérite Avatar de -N4w4k-
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2011
    Messages
    545
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2011
    Messages : 545
    Par défaut
    Salut,

    obtiens tu une erreur? Si oui laquelle? Si non qu'est ce qui ne va pas?

  8. #28
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2012
    Messages : 33
    Par défaut
    avec ce code xml ça marche, mais quand je le change par mon Menu.XML ça marche pas, je croix parce que c'est pas la même structuration mais j'arrive pas à le faire

Discussions similaires

  1. [Débutant] xml vers Treeview
    Par rabso007 dans le forum VB.NET
    Réponses: 5
    Dernier message: 21/05/2012, 17h50
  2. [C#] xml et treeview
    Par K_!!! dans le forum XML/XSL et SOAP
    Réponses: 3
    Dernier message: 04/07/2006, 09h33
  3. [C#] Problème chargement fichier xml dans treeview
    Par LE NEINDRE dans le forum Windows Forms
    Réponses: 4
    Dernier message: 23/06/2006, 14h10
  4. [C#] Treeview et XML
    Par Mandotnet dans le forum Windows Forms
    Réponses: 2
    Dernier message: 05/03/2006, 13h53
  5. Transformation XML-->XML en utilisant les treeview
    Par mmed dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 05/07/2005, 17h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo