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

Windows Forms Discussion :

Problème de sérialisation d'un objet de type form


Sujet :

Windows Forms

  1. #1
    Membre régulier Avatar de anas.eh
    Profil pro
    Inscrit en
    Février 2007
    Messages
    181
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Maroc

    Informations forums :
    Inscription : Février 2007
    Messages : 181
    Points : 119
    Points
    119
    Par défaut Problème de sérialisation d'un objet de type form
    Salut tout le monde,

    Mon problème est le suivant : losque je veux sérialiser une form sous Csharp j'obtient l'erreur suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    An unhandled exception of
    type 'System.Runtime.Serialization.SerializationException' occurred in
    mscorlib.dll
     
    Additional information: Type 'System.Windows.Forms.Form' in
    Assembly 'System.Windows.Forms, Version=2.0.0.0, Culture=neutral,
    PublicKeyToken=b77a5c561934e089' is not marked as serializable.
    Sachant que la méthode (de sérialisation) où le problème se déclenche est la 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
     
    public static void Save()
            {
                //test c'est ma form
                test tst = new test();
                tst.Show();            
     
                FileStream stream = File.Create("ser.dat");
     
                BinaryFormatter formatter = new BinaryFormatter();
                //Ou
               //SoapFormatter formatter = new SoapFormatter();
     
                formatter.Serialize(stream, tst);
     
                stream.Close();
            }
    J'espere vous m'aidez car j'en ai vraiment besoin, merci.

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    547
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 547
    Points : 627
    Points
    627
    Par défaut
    Salut,

    la reponse est dans "l'insulte" du compilateur. Une Form n'est pas serializable, car non marquée avec l'attribut [Serializable].

  3. #3
    Membre expérimenté
    Avatar de Mehdi Feki
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    1 113
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 113
    Points : 1 566
    Points
    1 566
    Par défaut
    Bonjour Anas,

    Comme dit le compilateur, la classe de base Form n'est pas serialisable.

    Il faut donc écrire toi même la serialisation de la form et ses attributs aussi (boutons, textbox, ...). Un travail de 2 à 3 mois

    Quel est l'intérêt de serialiser ta form ?
    Mehdi Feki : Modérateur .Net

  4. #4
    Membre régulier Avatar de anas.eh
    Profil pro
    Inscrit en
    Février 2007
    Messages
    181
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Maroc

    Informations forums :
    Inscription : Février 2007
    Messages : 181
    Points : 119
    Points
    119
    Par défaut
    Salut,

    Premièremenrt, je vous remercie pour vos réponses.
    Au fait, je veux sérialiser une form parce que j'ai un objet à qui j'ai attribué une form c'est à dire à chaque objet X j'ai besoin d'une forme Y qui est au début null. Donc dans la classe de l'objet X j'ai un attribut :
    Et moi je veux sérialiser l'objet X celà implique la sérialisation de la form qui attribut de cet objet. Je pense que c'est ça le prob, n'est ce pas ?

  5. #5
    Expert éminent
    Avatar de smyley
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    6 270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 6 270
    Points : 8 344
    Points
    8 344
    Par défaut
    Au lieu d'éssayer de serializer une form ( ce qui est ... impossible ) tu pourrai plutot construire un objet servant à contenir les propriétés de la form par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    [Serializable]
    class MyFormProperties
    {
      int left = 0;
      public int Left 
      { 
         get { return left; }
         set { left = value; }
       }
     
       etc..
    }
    Ensuite tu serialize cet objet et lors de la déserialisation tu récupères les valeurs ( que tu sauvegardes lors de la seriaization ) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    myform form = new myform();
    form.Left = mespropriétés.Left;
    ...

  6. #6
    Membre régulier Avatar de anas.eh
    Profil pro
    Inscrit en
    Février 2007
    Messages
    181
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Maroc

    Informations forums :
    Inscription : Février 2007
    Messages : 181
    Points : 119
    Points
    119
    Par défaut
    Et c'est ce que j'ai fait, même si que c'est que du bricolage ça marche comme même , merci à vous c'est très gentil de votre part.

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 03/06/2010, 23h36
  2. Réponses: 10
    Dernier message: 20/10/2008, 17h25
  3. [POO] PHP objet : problème de sérialisation
    Par Eleison dans le forum Langage
    Réponses: 4
    Dernier message: 25/05/2007, 16h01
  4. Réponses: 4
    Dernier message: 12/12/2006, 10h22
  5. [Sérialisation] d'objets de types différents
    Par Amnesiak dans le forum Général Java
    Réponses: 3
    Dernier message: 08/12/2004, 22h28

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