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 :

Classe & MDI [Débutant]


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Technical Team Leader
    Inscrit en
    Avril 2010
    Messages
    235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Technical Team Leader
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2010
    Messages : 235
    Par défaut Classe & MDI
    bonjour,

    je stock dans un fichier XML les données concernants les membres du bureau et dans un autre fichiers XML les joueurs d'un club de rugby...

    j'ai créé un form parent qui contient un button pour call l'enfant et un form enfant (qui sert a afficher les infos et modifier et rajouter un membre du fichier XML) qui contien un "combobox" des label, des texbox, un button pour +1 membre, picturebox...

    donc en fait je donne la possibilité d'ouvrir 2 fenetres enfant avec des names <>...

    donc voici une partie de mon code:

    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
     
    Private Sub MembreBureauToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MembreBureauToolStripMenuItem.Click
            Dim MDIBureau As New Peolpe
            Dim fsXML As FileStream
            Dim xmlnode As String
     
            MDIBureau.MdiParent = Me
            MDIBureau.Text = "Membre du bureau"
            MDIBureau.Show()
            MembreBureauToolStripMenuItem.Enabled = False
     
            fsXML = OpenXML(link & "People.xml", "person")
     
            For i As Integer = 0 To cptnode
                Dim membre(i) As MembreBureau
                XMLtoVAR(fsXML, i, "person", membre(i))
            Next
     
        End Sub
     
    Private Sub JoueurToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles JoueurToolStripMenuItem.Click
            Dim MDIJoueur As New Peolpe
            MDIJoueur.MdiParent = Me
            MDIJoueur.Text = "Liste des joueurs"
            MDIJoueur.Show()
            JoueurToolStripMenuItem.Enabled = False
        End Sub
     
    #Region " COMMUN "
     
        Private Function OpenXML(ByVal file As String, ByVal _xmlnode As String) As FileStream
            Dim xmldoc As New XmlDataDocument()
            Dim xmlnode As XmlNodeList
     
            Dim str As String
     
            Dim fs As New FileStream(file, FileMode.Open, FileAccess.Read)
            xmldoc.Load(fs)
            xmlnode = xmldoc.GetElementsByTagName(_xmlnode)
            cptnode = xmlnode.Count - 1
            fs.Close()
     
            Return fs
     
     
        End Function
     
        Private Sub XMLtoVAR(ByVal fs As FileStream, ByVal i As Integer, ByVal _xmlnode As String, ByVal xmembre As MembreBureau)
            Dim xmlnode As XmlNodeList
            xmlnode(i).ChildNodes.Item(0).InnerText.Trim()
            xmembre.visible = xmlnode(i).ChildNodes.Item(1).InnerText.Trim()
            xmembre.firstName = xmlnode(i).ChildNodes.Item(2).InnerText.Trim()
            xmembre.middleName = xmlnode(i).ChildNodes.Item(3).InnerText.Trim()
            xmembre.lastName = xmlnode(i).ChildNodes.Item(4).InnerText.Trim()
            xmembre.title = xmlnode(i).ChildNodes.Item(5).InnerText.Trim()
            xmembre.description = xmlnode(i).ChildNodes.Item(6).InnerText.Trim()
            xmembre.email = xmlnode(i).ChildNodes.Item(7).InnerText.Trim()
            xmembre.phone = xmlnode(i).ChildNodes.Item(8).InnerText.Trim()
            xmembre.firstName = xmlnode(i).ChildNodes.Item(9).InnerText.Trim()
            xmembre.streetAddress = xmlnode(i).ChildNodes.Item(10).InnerText.Trim()
            xmembre.city = xmlnode(i).ChildNodes.Item(11).InnerText.Trim()
            xmembre.state = xmlnode(i).ChildNodes.Item(12).InnerText.Trim()
            xmembre.postalCode = xmlnode(i).ChildNodes.Item(13).InnerText.Trim()
            xmembre.country = xmlnode(i).ChildNodes.Item(14).InnerText.Trim()
            xmembre.imageUrl = xmlnode(i).ChildNodes.Item(15).InnerText.Trim()
            xmembre.imageAltText = xmlnode(i).ChildNodes.Item(16).InnerText.Trim()
        End Sub
     
    #End Region
    OpenXML me sert uniqement de creer un "filestream" et de connaitre le nombre de noeud du fichier xml...

    j'ai créer une classe membrebureau qui as les memes attribut que mon fichier XML.

    puis je creais un membre(i) jusque là pas de problème, je creais autant de membre que de noeud...

    ma question comment envoyer a ma fenetre enfant tous mes membres(i) afin de remplir les champs? je plane un peu...

    mon code à la base était dans un form unique et je n'avais pas créer de classe mais une variable val(v1,v2) comme ca je j'airais les noeuds en v1 et les attributs en v2, faut t'il que j'incremente mes membre(i) dans ce genre de variable ?

  2. #2
    Membre éclairé
    Homme Profil pro
    Technical Team Leader
    Inscrit en
    Avril 2010
    Messages
    235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Technical Team Leader
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2010
    Messages : 235
    Par défaut
    je pense avoir trouver comme un grand, lol

    voici mon code:

    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
     
    Imports System.IO
    Imports System.Xml
     
    Public Class Peolpe
     
        Dim cptsaut As Integer
        Dim cptnode As String = 0
        Dim mode As Integer
        Dim valm(900) As MembreBureau
     
        Dim fichierX(1), val(900, 900) As String
        Dim link As String = My.Computer.FileSystem.SpecialDirectories.Desktop & "\XML file RCC\" '"RCC" '"XML file RCC"
     
        Private Sub Peolpe_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
     
            funcmode()
            people()
     
            Dim Membre As New MembreBureau
     
        End Sub
     
        Private Sub Peolpe_FormClosed(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosedEventArgs) Handles Me.FormClosed
            If mode = 0 Then
                acceuil.MembreBureauToolStripMenuItem.Enabled = True
            End If
            If mode = 1 Then
                acceuil.JoueurToolStripMenuItem.Enabled = True
            End If
        End Sub
     
        Private Sub funcmode()
            If Me.Text = "Membre du bureau" Then
                fichierX(0) = "People.xml"
                fichierX(1) = "person"
                mode = 0
            End If
            If Me.Text = "Liste des joueurs" Then
                fichierX(0) = "Joueur.xml"
                fichierX(1) = "People.xml"
                mode = 1
            End If
        End Sub
     
        Public Sub people()
     
            Dim i As Integer
            Do
     
                valm(i) = XMLtoVAR(link & fichierX(0), i, fichierX(1))
                i += 1
                If i = cptnode + 1 Then
                    Exit Do
                End If
            Loop Until False
     
     
        End Sub
     
    #Region " COMMUN "
     
        Private Function XMLtoVAR(ByVal file As String, ByVal i As Integer, ByVal _xmlnode As String) As MembreBureau
            Try
                Dim xmldoc As New XmlDataDocument()
                Dim xmlnode As XmlNodeList
                Dim xmembre As New MembreBureau
                Dim cpt As Integer
                Dim str As String
     
                Dim fs As New FileStream(file, FileMode.Open, FileAccess.Read)
                xmldoc.Load(fs)
                xmlnode = xmldoc.GetElementsByTagName(_xmlnode)
     
                cptnode = xmlnode.Count - 1
     
                'For i = 0 To xmlnode.Count - 1
                xmlnode(i).ChildNodes.Item(0).InnerText.Trim()
                cpt = 0
     
                xmlnode(i).ChildNodes.Item(0).InnerText.Trim()
                xmembre.visible = xmlnode(i).ChildNodes.Item(1).InnerText.Trim()
                xmembre.firstName = xmlnode(i).ChildNodes.Item(2).InnerText.Trim()
                xmembre.middleName = xmlnode(i).ChildNodes.Item(3).InnerText.Trim()
                xmembre.lastName = xmlnode(i).ChildNodes.Item(4).InnerText.Trim()
                xmembre.title = xmlnode(i).ChildNodes.Item(5).InnerText.Trim()
                xmembre.description = xmlnode(i).ChildNodes.Item(6).InnerText.Trim()
                xmembre.email = xmlnode(i).ChildNodes.Item(7).InnerText.Trim()
                xmembre.phone = xmlnode(i).ChildNodes.Item(8).InnerText.Trim()
                xmembre.firstName = xmlnode(i).ChildNodes.Item(9).InnerText.Trim()
                xmembre.streetAddress = xmlnode(i).ChildNodes.Item(10).InnerText.Trim()
                xmembre.city = xmlnode(i).ChildNodes.Item(11).InnerText.Trim()
                xmembre.state = xmlnode(i).ChildNodes.Item(12).InnerText.Trim()
                xmembre.postalCode = xmlnode(i).ChildNodes.Item(13).InnerText.Trim()
                xmembre.country = xmlnode(i).ChildNodes.Item(14).InnerText.Trim()
                xmembre.imageUrl = xmlnode(i).ChildNodes.Item(15).InnerText.Trim()
                xmembre.imageAltText = xmlnode(i).ChildNodes.Item(16).InnerText.Trim()
                ' Next
                fs.Close()
     
                Return xmembre
            Catch ex As Exception
                MsgBox(ex.Message)
            End Try
        End Function
     
    #End Region

  3. #3
    Membre émérite Avatar de ctxnop
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2007
    Messages : 858
    Par défaut
    Salut,
    Je pense que tu te prend a tête pour rien.
    Déjà, jouer avec un filestream quand tu as un XmlDocument, ça sert à rien d'autre que de se compliquer la tâche.

    Quand tu écris une classe il ne faut se dire qu'il faut tout typer en string parce que ca ira dans un XML. Ce n'est pas le problème de la classe de savoir ça. Donc tu peux typer fortement tous les champs de tes classes.

    Il faut créer des classes pour chaque objet, sur le même principe que ta classe MembreBureau.

    La lecture/écriture en XML se fait purement par la sérialisation XML, il n'y a pas de méthode à écrire du genre de XMLtoVAR.

    Enfin, pour gérer des liste d'objet il existe un objet nommé List.

    Lis bien ces deux liens, tu as tout ce qu'il faut pour faire tout ce que tu veux de façon simple, claire et bien faite.

  4. #4
    Membre éclairé
    Homme Profil pro
    Technical Team Leader
    Inscrit en
    Avril 2010
    Messages
    235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Technical Team Leader
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2010
    Messages : 235
    Par défaut
    merci pour tes conseils

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Récupérer des classes d'un projet MDI
    Par MoscoBlade dans le forum MFC
    Réponses: 2
    Dernier message: 10/12/2006, 16h25
  2. Réponses: 31
    Dernier message: 30/03/2006, 16h57
  3. enregistrer dans un fichier avec une appli mdi
    Par ferrari dans le forum C++Builder
    Réponses: 4
    Dernier message: 05/05/2002, 15h17

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