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 :

Problème d'utilisation de la serialisation


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Février 2013
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Février 2013
    Messages : 43
    Par défaut Problème d'utilisation de la serialisation
    Bonsoir,

    Je cherche en vain a savoir comment sérialiser la position de mes boutons créer dynamiquement, mais aucune réponse ^^
    Pourriez-vous m'éclairer sur la sérialisation de la position de mes boutons créer dynamiquement ?

    Merci d'avance

  2. #2
    Membre Expert
    Homme Profil pro
    Développeur .Net / Delphi
    Inscrit en
    Juillet 2002
    Messages
    738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur .Net / Delphi
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2002
    Messages : 738
    Par défaut
    Bonjour,

    Ca dépend un peu de la finalité de ce que tu veux faire. Si tu veux simplement conserver la position de tes boutons sur une form, tu crées une classe PositionBoutons avec 2 propriétés (Left, Top) et tu sérialises une List(of PositionBoutons)

    Maintenant si la finalité est plus complexe genre serializer toutes les propriétés du bouton (text, position, taille, events appelés) ou un bouton peut-être placé sur un container de type panel ou encore serializer autre chose qu'un bouton, la problématique sera un peu différente.

  3. #3
    Membre averti
    Inscrit en
    Février 2013
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Février 2013
    Messages : 43
    Par défaut
    Merci pour m'avoir répondu Mais pouvez-me donner un exemple de code pour la sérialisation ?

  4. #4
    Membre Expert
    Homme Profil pro
    Développeur .Net / Delphi
    Inscrit en
    Juillet 2002
    Messages
    738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur .Net / Delphi
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2002
    Messages : 738
    Par défaut
    Le net regorge d'exemples. J'en ai fait un petit mais je viens de voir qu'on était sur le forum VB. Mon exemple est en C# mais ne pose pas de difficulté de conversion (au pire, il y a des outils). Exemple de serialisation d'une classe myClass ayant des propriétés de type simple :
    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
    private void button1_Click(object sender, EventArgs e)
    {
        List<myClass> l = new List<myClass>();
        myClass c;
     
        c = new myClass();
        c.Width = 10;
        c.Height = 20;
        l.Add(c);
     
        c = new myClass();
        c.Width = 220;
        c.Height = 210;
        l.Add(c);
     
        serialize(l);
    }
     
    private void button2_Click(object sender, EventArgs e)
    {
        List<myClass> l = deserialize();
    }
     
    // deSerialisation d'une List(of myClass)
    private List<myClass> deserialize()
    {
        XmlSerializer x = new XmlSerializer(typeof(List<myClass>));
        using (StreamReader reader = new StreamReader(@"d:\temp\serial.xml"))
        {
            return (List<myClass>)x.Deserialize(reader);
        }
    }
     
    // Serialisation d'une List(of myClass)
    private void serialize(List<myClass> list)
    {
        XmlSerializer x = new XmlSerializer(typeof(List<myClass>));
        using (TextWriter writer = new StreamWriter(@"d:\temp\serial.xml"))
        {
            x.Serialize(writer, list);
        }
    }

  5. #5
    Membre averti
    Inscrit en
    Février 2013
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Février 2013
    Messages : 43
    Par défaut
    J'ai converti le code asser facilement, mais par contre j'ai test que la serialisation, mais cela ne marche pas
    Code de ma classe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Public Class Boutonn
        Property X As Integer
        Property Y As Integer
    End Class
    Code principal :
    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
    Imports System.Xml.Serialization
    Imports System.IO
    Public Class Options_controls
        Public Num As Integer
        Public WithEvents btn As Button
        Public LocalMousePosition As Point
        Public Nu As Integer
        Private Sub serialize(list As List(Of Boutonn))
            Dim x As New XmlSerializer(GetType(List(Of Boutonn)))
            Using writer As TextWriter = New StreamWriter("c:\serial.xml")
                x.Serialize(writer, list)
            End Using
        End Sub
        Private Sub Options_controls_MouseClick(ByVal sender As Object, ByVal e As MouseEventArgs) Handles Me.MouseClick
            If e.Button = MouseButtons.Left And Form1.btn = 1 Then
                btn = New Button
                Num += 1
                Nu = 1
                btn.Text = "Button" + Num.ToString
                btn.Name = "Button" + Num.ToString
                LocalMousePosition = Me.PointToClient(Cursor.Position)
                btn.Location = New Drawing.Point(LocalMousePosition.X, LocalMousePosition.Y)
                Me.Controls.Add(btn)
                AddHandler Me.Controls(btn.Name).MouseDown, AddressOf btn_MouseDown
            End If
        End Sub
        Private Sub btn_MouseDown(ByVal sender As Object, ByVal e As MouseEventArgs)
            If e.Button = MouseButtons.Right And Form1.btn = 1 Then
                btn = CType(sender, Button)
                Timer1.Start()
            Else
                Timer1.Stop()
            End If
        End Sub
        Private Sub Timer1_Tick_1(sender As Object, e As EventArgs) Handles Timer1.Tick
            LocalMousePosition = PointToClient(Cursor.Position)
            btn.Location = New Drawing.Point(LocalMousePosition.X, LocalMousePosition.Y)
        End Sub
        Private Sub Options_controls_KeyPress(sender As Object, e As KeyPressEventArgs) Handles Me.KeyPress
            If e.KeyChar = Microsoft.VisualBasic.ChrW(Keys.Enter) Then
                If MsgBox("Voulez vous enregistrer?", MsgBoxStyle.YesNo, "Enregistrement") = MsgBoxResult.Yes Then
                    Timer1.Stop()
                    Dim l As New List(Of Boutonn)
                    Dim c As Boutonn
     
                    c = New Boutonn
                    c.X = btn.Location.X
                    c.Y = btn.Location.Y
                    l.Add(c)
     
                    serialize(l)
                    Me.Close()
                Else
                    Timer1.Stop()
                    Me.Close()
                End If
            End If
        End Sub
    End Class
    Les boutons ne se remettent pas en place, une fois la fenêtre fermer et puis réouverte ^^

  6. #6
    Membre Expert
    Homme Profil pro
    Développeur .Net / Delphi
    Inscrit en
    Juillet 2002
    Messages
    738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur .Net / Delphi
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2002
    Messages : 738
    Par défaut
    C'est normal, regarde ton code : Tu ne déserialises pas ton fichier au démarrage (load) de la form.

    L'idée serait :
    Lorsque tu fermes ta form, tu sérialises les coordonnées de tes boutons tel que tu le fais actuellement.
    Lorsque tu Load ta form, tu déserialises le fichier => cela créera une liste de Buttonn (liste d'objets ne contenant que les coordonnées de tes futurs boutons). Tu parcours cette liste, instancies les boutons et les places sur la form.

Discussions similaires

  1. Réponses: 4
    Dernier message: 03/03/2010, 09h08
  2. [Asp.net/Vb.net] Problème utilisation Combobox
    Par NameX dans le forum ASP.NET
    Réponses: 0
    Dernier message: 13/11/2009, 15h16
  3. [ADO.Net] - Problème lors de l'utilisation de plusieurs DataReader
    Par Aurazed dans le forum Accès aux données
    Réponses: 1
    Dernier message: 29/10/2007, 16h21
  4. [VB.NET] problème d'utilisation de substotal (excel via VB)
    Par Pynuch dans le forum Windows Forms
    Réponses: 4
    Dernier message: 17/11/2005, 13h53
  5. Problème d'utilisation de Mysql avec dev-c++
    Par Watchi dans le forum Dev-C++
    Réponses: 10
    Dernier message: 06/08/2004, 14h35

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