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 :

[C#] Enregistrer une combobox


Sujet :

Windows Forms

  1. #1
    Membre éclairé Avatar de padodanle51
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2006
    Messages
    389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2006
    Messages : 389
    Par défaut [C#] Enregistrer une combobox
    bonjour voilà je souhaite sauvegarder à chaque fin d'application l'état de ma combobox, mais voilà il me semble qu'il y a un bug dans les settings de visual studio car mon code est bon et malgré tout à chage démarrage mon combobox des settings = null
    D'après vous le bug viens de moi ou de visual studio car voilà mon code au lancement:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     if (Properties.Settings.Default.Favorisliste != null)
                {
                    comboBox1 = Properties.Settings.Default.Favorisliste;
                }
    et kan j'ajoute un élément dans ma combo voilà ce que je met
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    comboBox1.Items.Add(textBox1.Text);
                    Properties.Settings.Default.Favorisliste = comboBox1;
                    Properties.Settings.Default.Save();
    Merci de m'aider

  2. #2
    Membre éclairé Avatar de padodanle51
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2006
    Messages
    389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2006
    Messages : 389
    Par défaut
    esque quelqu'un a déjà réussi à stocker les éléments de sa combobox dans les settings. Autrement si vous avez une autre solution pour moi je suis prenant
    Merci

  3. #3
    Membre éclairé Avatar de padodanle51
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2006
    Messages
    389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2006
    Messages : 389
    Par défaut
    Bon déjà je vois d'ou vien le soucis, c'est que au chargement
    Properties.Settings.Default.Favorisliste = null, pourquoi a votre avis? merci de m'aider c très important

  4. #4
    Membre éclairé Avatar de padodanle51
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2006
    Messages
    389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2006
    Messages : 389
    Par défaut Peut-etre que ça pourra vous aider
    j'ai ouvert le fichier xml où tout se sauvegarde et là stupeur! il y a bien favorislist mais il n'y a aucune value?!?!
    Moi je vois vraiment pas d'où ça peut venir

  5. #5
    Membre expérimenté Avatar de toniolol
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Juin 2005
    Messages
    281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 281
    Par défaut
    Salut je ne peux pas tester mais ne peux-tu pas faire ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Properties.Settings.Default.Favorisliste = comboBox1.Items;

  6. #6
    Membre éclairé Avatar de padodanle51
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2006
    Messages
    389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2006
    Messages : 389
    Par défaut
    Non ça ne marche pas g l'erreur suivante:

    Impossible de convertir implicitement le type 'System.Windows.Forms.ComboBox.ObjectCollection' en 'System.Windows.Forms.ComboBox'

    et si je fais

    Properties.Settings.Default.Favorisliste.Items = comboBox1.Items;

    j'ai une erreur comme koi items est en lecture seul
    (Merci de m'aider tu es le seul)

  7. #7
    Membre éclairé Avatar de padodanle51
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2006
    Messages
    389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2006
    Messages : 389
    Par défaut
    Esque le problème peut venir que dans settings.settings quand j'ai enregistré favorislist je n'ai rien mis à value? si c'est le cas quesque je dois mettre svp?

  8. #8
    Membre expérimenté Avatar de toniolol
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Juin 2005
    Messages
    281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 281
    Par défaut
    Le souci c'est que tu semble être sur du C# v2 et que je suis en VB 1.1 et occasionnelement (pas assez à mon gout) en v2 alors mon aide est plus que limitée.
    Une question quand même, en mode debug que dit un espion posé sur "Properties.Settings.Default.Favorisliste" au moment du chargement de ton appli ?

  9. #9
    Membre éclairé Avatar de padodanle51
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2006
    Messages
    389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2006
    Messages : 389
    Par défaut
    il me dit que ça vaut null

  10. #10
    Membre expérimenté Avatar de toniolol
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Juin 2005
    Messages
    281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 281
    Par défaut
    Et au niveau de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Properties.Settings.Default.Favorisliste = comboBox1;
    Quelle est sa valeur avant (null normalement) et après ?

  11. #11
    Membre éclairé Avatar de padodanle51
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2006
    Messages
    389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2006
    Messages : 389
    Par défaut
    Il se remplit bien

  12. #12
    Membre éclairé Avatar de padodanle51
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2006
    Messages
    389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2006
    Messages : 389
    Par défaut
    En fait il se remplie mais dans le fichier xml il a toujours aucune valeur!
    si quelqu'un pe essayer de sauvegarder ue combobox et me dire s ça marche ça serai cool
    merci

  13. #13
    Membre expérimenté
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Sarthe (Pays de la Loire)

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

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Par défaut
    Je vais peut être dire une bêtise, car ce qui suit n'est que déduction, mais on ne sait jamais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Properties.Settings.Default.Favorisliste = comboBox1.Items;
    Impossible de convertir implicitement le type 'System.Windows.Forms.ComboBox.ObjectCollection' en 'System.Windows.Forms.ComboBox'
    A la vue de ce du bout de code et du message d'erreur, je dirais que ton problème vient du fait que tu cherches à stocker l'objet ComboBox directement (Favorisliste et de type ComboBox) alors que ce que tu devrais faire c'est enregistrer les différents items de ta ComboBox, pour pouvoir la réalimenter au prochain coup.

    Une manière de faire, mais je n'ai jamais eu à l'utiliser, est la sérialisation Xml. En sérialisant ta collection d'Items, tu pourrais réalimenter ta ComboBox avec cette collection par la suite.

    Prenons un exemple. Sur une fenêtre, j'ai une ComboBox et un bouton. Lorsque je clic sur ce bouton, je demande à sérialiser la collection d'Items de la ComboBox
    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
    private void button1_Click(object sender, EventArgs e)
    {
        this.Serialize(this.comboBox1.Items);
    }
     
    private void Serialize(object monObjet)
    {            
        try
        {
            using (StreamWriter stream = new StreamWriter("C:\\serialize.xml"))
            {
                XmlSerializer serializer = new XmlSerializer(monObjet.GetType());
                serializer.Serialize(stream, monObjet);
            }
        }
        catch (Exception ex)
        {
            string s = ex.Message;
        }
    }
    et le fichier généré au final ressemble à ceci
    <?xml version="1.0" encoding="utf-8"?>
    <ArrayOfAnyType xmlns...>
    <anyType xsi:type="xsd:string">Choix 1</anyType>
    <anyType xsi:type="xsd:string">Choix 2</anyType>
    <anyType xsi:type="xsd:string">Choix 3</anyType>
    <anyType xsi:type="xsd:string">Choix n</anyType>
    </ArrayOfAnyType>
    Je retrouve bien dans ce fichier les différents items de ma ComboBox. Après rien de plus simple que de parcourir ce fichier pour réalimenter une ComboBox. C'était assez trivial dans ce cas là, chaque item est un String, mais on peut facilement faire la même chose avec des item qui sont eux même des classes perso

    La sérialisation est peut être un peu lourde pour ce genre de chose, mais ce qu'il faut bien voir c'est que ce sont les items qu'il faut enregistrer et non la ComboBox

  14. #14
    Membre éclairé Avatar de padodanle51
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2006
    Messages
    389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2006
    Messages : 389
    Par défaut
    Ok merci je v essayer et je vous tiens au courant demain, en effet je stocker la combobox et pas les items et ça tombe bien mes items sont des strings. Merci beaucoup (par contre pour le load comment faire pour recharger la combobox?)
    Merci encore

  15. #15
    Membre expérimenté
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Sarthe (Pays de la Loire)

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

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Par défaut
    Citation Envoyé par padodanle51
    par contre pour le load comment faire pour recharger la combobox?
    Tu fais juste un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    maComboBox.Items.Add(maString);
    En récupérant les différentes chaînes depuis leur conteneur (fichier Xml si sérialisation, ...).

  16. #16
    Membre éclairé Avatar de padodanle51
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2006
    Messages
    389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2006
    Messages : 389
    Par défaut
    merci bcp je test tout ça et je te dis si ça marche bien (par contre je pourrai tester que demain ) je donne des nouveles dès demain matin

  17. #17
    Membre éclairé Avatar de padodanle51
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2006
    Messages
    389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2006
    Messages : 389
    Par défaut
    Bon ben j'arrvie pas à récuperer les differents chaines, étant donnès qui'l fo les trovuer dans le xml je ne sais pas du tout comment on fait pour les récupérer. Merci bcp pour ton aide. Gardant le principe de serialisation sur un site j'ai trouvé ce 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
     
    maClasse monObjet = new maClasse(); // peut être n'importe quel objet sérializable, p.ex un DataSet 
    [...] 
    using System.Xml.Serialization; 
    [...] 
    XmlSerializer serialiseur = new XmlSerializer(typeof(maClasse)); 
    Textwriter writer = new StreamWriter("monfichier.xml"); 
    serializeur.Serialize(writer,monObjet); 
    writer.Close(); 
    // voilà, c'est tout... 
    // on peut désérializer de la même façon... 
    [...] 
    using System.Xml.Serialization; 
    [...] 
    XmlSerializer serialiseur = new XmlSerializer(typeof(maClasse)); 
    TextReader reader = new StreamReader("monfichier.xml"); 
    monObjet = (maClasse) serialiseur.Deserialize(reader); 
    reader.Close();
    je l'ai testé, mais j'ai des erreurs

  18. #18
    Membre expérimenté
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Sarthe (Pays de la Loire)

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

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Par défaut
    Quelle erreurs as-tu ? Qu'on puisse avancer.

    Sinon, voici comment j'ai fait pour sérialiser/désérialiser la collection d'items d'une ComboBox. Je suis passer par une collection intermédiaire car la ComboBox.ObjectCollection n'est pas adaptée pour les traitements.
    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
    private void button1_Click(object sender, EventArgs e)
    {
        // On construit la liste des items à sérialiser
        List<Item> list = new List<Item>();            
        foreach (Item i in comboBox1.Items)
        {
            list.Add(i);
        }
        // On sérialise cette liste
        this.Serialize(list);
        // On désérialise dans une nouvelle liste
        List<Item> newList = this.Deserialize();
        if (newList != null)
        {
            // On ajoute à la ComboBox les éléments désérialisés
            this.comboBox1.Items.AddRange(newList.ToArray());
        }
    }
     
    private void Serialize(object monObjet)
    {
        try
        {
            using (StreamWriter stream = new StreamWriter("C:\\serialize.xml"))
            {
                XmlSerializer serializer = new XmlSerializer(monObjet.GetType());
                serializer.Serialize(stream, monObjet);
            }
        }
        catch (Exception ex)
        {
            string s = ex.Message;
        }
    }
     
    private List<Item> Deserialize()
    {
        List<Item> list = null;
     
        try
        {
            using (StreamReader stream = new StreamReader("C:\\serialize.xml"))
            {
                XmlSerializer serializer = new XmlSerializer(typeof(List<Item>));
                list = (List<Item>)serializer.Deserialize(stream);
            }
        }
        catch (Exception ex)
        {
            string s = ex.Message;
        }
     
        return list;
    }
    Dans ce code, tu pourrais remplacer la classe Item, par la classe String puisque c'est ce que tu utilises.

    P.S. : repasse sur tout tes messages pour ajouter les balises de code stp

  19. #19
    Membre éclairé Avatar de padodanle51
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2006
    Messages
    389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2006
    Messages : 389
    Par défaut
    bon pour l'erreur voilà ce que j'ai
    L'exception System.InvalidOperationException n'a pas été gérée
    Message="Une erreur s'est produite lors de la réflexion du type 'System.Windows.Forms.ComboBox'."
    Source="System.Xml"

    Je vais essayer ton code, je te tiens au courant
    Merci encore pour tous
    PS: j'ai mis les balises de code

  20. #20
    Membre éclairé Avatar de padodanle51
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2006
    Messages
    389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2006
    Messages : 389
    Par défaut
    dans ton code j'ai un bug: sur la déclaration de la fontion private List<Item> Deserialize()

    Erreur 1 Le type ou le nom d'espace de noms 'Item' est introuvable (une directive using ou une référence d'assembly est-elle manquante*?)

    En fait je dois serialiser lorsque j'enregistre un élément, et déserialiser quand je load la form c'est ça?

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Multi-selection dans une ComboBox ?
    Par Moloko dans le forum MFC
    Réponses: 5
    Dernier message: 07/07/2021, 18h26
  2. Enregistrer les modifications du Textbox relié à une Combobox
    Par foular dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 31/03/2015, 13h38
  3. Enregistrer des options dans une ComboBox
    Par nadabb dans le forum C#
    Réponses: 11
    Dernier message: 26/07/2009, 19h31
  4. enregistrements d'une colonne de table vers une combobox ?
    Par gregcat dans le forum Bases de données
    Réponses: 4
    Dernier message: 30/01/2006, 10h57
  5. Pré-sélectionner un élément d'une combobox
    Par delphim dans le forum Composants VCL
    Réponses: 4
    Dernier message: 17/06/2003, 16h26

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