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 pour les fichiers de configuration


Sujet :

Windows Forms

  1. #1
    Membre actif Avatar de DarkSeiryu
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2009
    Messages
    425
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Janvier 2009
    Messages : 425
    Points : 275
    Points
    275
    Par défaut Problème pour les fichiers de configuration
    Bijour,

    donc, comme il me l'a été suggéré, je suis allé utiliser ce tuto : http://nico-pyright.developpez.com/t...#Laddappconfig pour faire un fichier de configuration.

    Voici le code dans mon fichier de configuration :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <configuration>
      <appSettings>
        <add key="nom" value=""/>
      </appSettings>
    </configuration>
    Ensuite, je veux modifier la value du champ "nom" quand l'utilisateur clique sur un bouton et d'après le tuto', je dois utiliser ce code là :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    string nom = ConfigurationManager.AppSettings["nom"];
    Console.WriteLine("{0} - {1}", prenom, nom);
    Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
    config.AppSettings.Settings.Remove("nom");
    config.AppSettings.Settings.Add("nom", "Nouveau nom");
    config.Save(ConfigurationSaveMode.Modified);
    ConfigurationManager.RefreshSection("appSettings");
     
    prenom = ConfigurationManager.AppSettings["nom"];
    Console.WriteLine("{0} - {1}", nom);
    Mais j'ai plusieurs erreurs générées, chaque fois la même :
    Le nom "ConfigurationManager" n'existe pas dans le contexte actuel.
    J'ai pourtant bien ajouté la référence à mon projet...

    Quelqu'un voit d'où cela peut venir ?

    Merci d'avance.

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    614
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 614
    Points : 299
    Points
    299
    Par défaut
    tu as bien le using System.Configuration; et ajouter la reference a ton projet?

  3. #3
    Membre émérite Avatar de Guulh
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    2 160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 2 160
    Points : 2 925
    Points
    2 925
    Par défaut
    Je vais me répéter, mais tant pis

    Vu que ton besoin est simple et standard, je te conseille d'utiliser la méthode simple et standard, qui en plus propose un designer directement intégré à Visual Studio et fourni un accès fortement typé à tes settings.

    Dans ton cas, ce sont les items de ta combo que tu veux mettre dans le ficheir de config : pour cela, il te suffit de
    • aller dans les propriétés de ton projet
    • dans la grille de l'onglet paramètre, rajouter un paramètre, lui donner un nom (disons "Truc", et dire qu'il est du type System.Collections.Specialized.StringCollection, et lui donner sa valeur par défaut.
    • Préciser que la portée est "Utilisateur" et non pas application. En gros, les paramètres Application sont propre à toute l'appli, et ne peuvent être changés qu'à la main en éditant le fichier de config, alors que les paramètres users peuvent être modifiés via code (et chaque utilsateur différent de l'appli a son propre fichier de paramètres user)
    • Dans ton code, tu peux lire et écrire TonNamespace.Properties.Settings.Truc ; il te suffit de faire TonNamespace.Properties.Settings.Save() pour écrire tes modifs dans le fichier de config
    • et comme il n'est pas possible de directement binder via le designer de form la propriété Items de la combo, il te suffit dans ton code d'écrire taCombo.DataSource = TonNamespace.Properties.Settings.Truc.
    Voilà, en gros
    ಠ_ಠ

  4. #4
    Membre actif Avatar de DarkSeiryu
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2009
    Messages
    425
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Janvier 2009
    Messages : 425
    Points : 275
    Points
    275
    Par défaut
    Citation Envoyé par skunkies Voir le message
    tu as bien le using System.Configuration; et ajouter la reference a ton projet?
    J'avais la référence mais j'avais pas vérifié que l'using avait été ajouté :/
    Maintenant ça marche, merci.

    Citation Envoyé par Guulh Voir le message
    [*]Dans ton code, tu peux lire et écrire TonNamespace.Properties.Settings.Truc ; il te suffit de faire TonNamespace.Properties.Settings.Save() pour écrire tes modifs dans le fichier de config[*]et comme il n'est pas possible de directement binder via le designer de form la propriété Items de la combo, il te suffit dans ton code d'écrire taCombo.DataSource = TonNamespace.Properties.Settings.Truc.[/LIST]Voilà, en gros
    Ca ne marche pas :S
    Quand j'essaie ça je ne peux que marquer MonNamepace.Properties.Settings et après mon paramètre n'apparait pas dans la liste déroulante.

    Petite question supplémentaire : une fois que j'ai créé mon paramètre, 'faut que je clique sur Synchroniser ou Afficher le code ?
    Enfin de toute façon quand j'essaie de le synchroniser, j'ai ce message d'erreur qui s'affiche :
    Aucun fichier user.config n'a été trouvé aux emplacements suivants :
    Et y'a pas d'emplacements marqués en plus lol

    PS : Et oui désolé de t'avoir fait répéter Gulth mais ça marchait pas alors j'ai trouvé l'autre solution plus simple mais maintenant autant que j'essaie les deux pour voir laquelle est vraiment mieux.

  5. #5
    Membre actif Avatar de DarkSeiryu
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2009
    Messages
    425
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Janvier 2009
    Messages : 425
    Points : 275
    Points
    275
    Par défaut
    Nan c'est bon j'ai trouvé, en fait c'est pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Fiche_De_Poste.Properties.Settings.Truc
    mais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Fiche_De_Poste.Properties.Settings.Default.Truc
    Et là effectivement grâce à ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Fiche_De_Poste.Properties.Settings.Default.test.Add(text_realisation); // text_realisation est une variable dans laquelle je stock le nom de l'utilisateur
    cb_test.DataSource = Fiche_De_Poste.Properties.Settings.Default.test; // cb_test est ma comboBox
    Fiche_De_Poste.Properties.Settings.Default.Save();
    ça marche, mais pas complétement, j'ai deux soucis :

    1) Dans ma comboBox, le nom s'affiche bien mais j'ai également un "1" qui s'affiche dans cette dernière
    2) Si je ferme l'appli', quand je la rouvre les données de la comboBox sont plus là, donc le Save() marche pas.

    Ah là là l'informatique, ça marche jamais du premier coup !

    Merci de votre aide.

  6. #6
    Membre émérite Avatar de Guulh
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    2 160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 2 160
    Points : 2 925
    Points
    2 925
    Par défaut
    Avant de faire Save(), il faut que tu affectes à Truc la liste des objets contenus dans ta combo.

    Je te laisse le soin de convertir Items dans le bon type pour le mettre dans Truc
    ಠ_ಠ

  7. #7
    Membre actif Avatar de DarkSeiryu
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2009
    Messages
    425
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Janvier 2009
    Messages : 425
    Points : 275
    Points
    275
    Par défaut
    Effectivement ça marche mieux, juste deux petites questions.

    La première, j'ai ça comme code dans mon bouton :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Fiche_De_Poste.Properties.Settings.Default.test2.Add(text_realisation);
                cb_test.DataSource = Fiche_De_Poste.Properties.Settings.Default.test2;
                Fiche_De_Poste.Properties.Settings.Default.test2.Add(System.Convert.ToString(cb_test.Items));
                Fiche_De_Poste.Properties.Settings.Default.Save();
    Est-ce qu'il n'y a pas quelque chose en trop ?

    La seconde, dans mon Form1.Load j'ai ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    cb_test.DataSource = Fiche_De_Poste.Properties.Settings.Default.test2;
    Et donc à l'ouverture du .exe, il y a la liste des noms déjà saisis dans la comboBox, cependant il contient aussi autre chose :
    System.Windows.Forms.ComboBox+ObjectCollection
    pour chaque nouveau nom inscrit.
    Comment j'enlève ça ?

    Merci d'avance.

  8. #8
    Membre actif Avatar de DarkSeiryu
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2009
    Messages
    425
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Janvier 2009
    Messages : 425
    Points : 275
    Points
    275
    Par défaut
    Personne ne voit d'où peut venir le souci ?

  9. #9
    Membre émérite Avatar de Guulh
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    2 160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 2 160
    Points : 2 925
    Points
    2 925
    Par défaut
    Citation Envoyé par DarkSeiryu Voir le message
    Personne ne voit d'où peut venir le souci ?
    Ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Fiche_De_Poste.Properties.Settings.Default.test2.Add(System.Convert.ToString(cb_test.Items));
    est faux. Passe ton code au debugger, en mode pas à pas, et regarde ce que vaut System.Convert.ToString(cb_test.Items).

    Pour extraire les éléments d'une combo et les mettre dans ta collection, faut faire comme ça :
    - d'abord, vider la collection que t'as déjà : gnagnagna.test2.Clear();
    - puis parcourir les éléments de ta Combo : foreach(object o in taCombo.Items)
    - convertir chaque élément en chaîne et l'ajouter à test2 : test2.Add(o.ToString());


    Parce que là, ce que t'as fait, c'est créer une (seule) chaîne en ToStringuant la propriété Items de ta combo, alors qu'il faut y aller élément par élément.

    Voilà
    ಠ_ಠ

  10. #10
    Membre actif Avatar de DarkSeiryu
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2009
    Messages
    425
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Janvier 2009
    Messages : 425
    Points : 275
    Points
    275
    Par défaut
    Super ça marche du tonnerre !!

    Merci beaucoup de ton aide !

  11. #11
    Membre actif Avatar de DarkSeiryu
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2009
    Messages
    425
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Janvier 2009
    Messages : 425
    Points : 275
    Points
    275
    Par défaut
    Obligé d'UP le sujet, j'ai des soucis :/

    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
     
    foreach (object o in cb_nom_doc.Items)
    {
            if (text_nom_doc != o.ToString()) // text_nom_doc est une variable rempli avant de cliquer sur le bouton dans lequel ce code se trouve
            {
                // On clear les données du setting.
                Fiche_De_Poste.Properties.Settings.Default.nomDoc.Clear();
                // On ajoute les données saisies au setting.
                Fiche_De_Poste.Properties.Settings.Default.nomDoc.Add(text_nom_doc);
     
                foreach (object p in cb_nom_doc.Items)
                {
                    // On convertit chaque Item de la comboBox et on les ajoute au setting.
                    Fiche_De_Poste.Properties.Settings.Default.nomDoc.Add(p.ToString());
                }
     
                // On sauvegarde le setting.
                Fiche_De_Poste.Properties.Settings.Default.Save();
        }
    }
    Ce que j'essaie de faire est donc d'ajouter des données saisies par l'utilisateur, dans une comboBox, dans un setting pour permettre à l'utilisateur de retrouver des documents qu'il aurait déjà réalisé et que si il tape un nom de fichier qui existe déjà, ce nom ne serait pas ajouté à la comboBox.

    Ce code marchait très bien jusqu'à que je le modifie et que tout plante. Depuis, j'ai beau l'avoir retapé 4 fois, dans sa version initiale, pas moyen de le refaire marcher correctement : le nom du fichier est toujours enregistré, même si il existe déjà dans la comboBox...

    Quelqu'un voit d'où peut provenir le souci ?

    Merci d'avance.

  12. #12
    Membre actif Avatar de DarkSeiryu
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2009
    Messages
    425
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Janvier 2009
    Messages : 425
    Points : 275
    Points
    275
    Par défaut
    UP !

  13. #13
    Membre actif Avatar de DarkSeiryu
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2009
    Messages
    425
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Janvier 2009
    Messages : 425
    Points : 275
    Points
    275
    Par défaut
    Personne n'a de solution ?

  14. #14
    Membre émérite Avatar de Guulh
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    2 160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 2 160
    Points : 2 925
    Points
    2 925
    Par défaut
    Si tu veux éviter les doublons dans la liste que tu enregistres dans les settings, il suffit juste dans ta boucle de n'ajouter une chaîne à cette liste que si elle n'y est pas déjà.
    ಠ_ಠ

  15. #15
    Membre actif Avatar de DarkSeiryu
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2009
    Messages
    425
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Janvier 2009
    Messages : 425
    Points : 275
    Points
    275
    Par défaut
    C'est bien ce que j'essaie de faire avec mon premier foreach et mon if, mais ça ne marche pas enfin ça ne marche plus... Oui parce qu'il y eu un temps où ça marchait mais j'ai voulu y modifier, ça a tout cassé et même en remettant le code tel qu'il était avant ça ne marche plus...

    Voilà pourquoi j'ai UP le sujet.

  16. #16
    Membre actif Avatar de DarkSeiryu
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2009
    Messages
    425
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Janvier 2009
    Messages : 425
    Points : 275
    Points
    275
    Par défaut
    J'viens de comprendre ce que tu m'as dit lol

    C'est bon ça marche niquel ^^

    Quoique j'ai un doute de la manière dont je m'y suis pris

    Voilà 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
     
    private void bt_verification_Click(object sender, EventArgs e)
    {
        // On clear les données du setting.
        Fiche_De_Poste.Properties.Settings.Default.nomDoc.Clear();
        // On ajoute les données saisies au setting.     
        Fiche_De_Poste.Properties.Settings.Default.nomDoc.Add(text_nom_doc);
     
        foreach (object p in cb_nom_doc.Items)
        {
            if (text_nom_doc != p.ToString())
            {
                // On convertit chaque Item de la comboBox et on les ajoute au setting.             
                Fiche_De_Poste.Properties.Settings.Default.nomDoc.Add(p.ToString());
            }
        }
     
        // On sauvegarde le setting.
        Fiche_De_Poste.Properties.Settings.Default.Save();
    }
    Rappel : text_nom_doc est une variable qui reçoit les données d'une textBox.

    Mon if est-il correcte ?

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

Discussions similaires

  1. [PHP 5.0] problème de stockage pour les fichier uploder
    Par diblasio dans le forum Langage
    Réponses: 2
    Dernier message: 10/08/2010, 00h47
  2. Problème avec les fichiers ".frx" pour les formulaires!
    Par charly75 dans le forum Général VBA
    Réponses: 2
    Dernier message: 19/08/2009, 17h35
  3. [encoding] Problème pour les fichiers XML avec notepad
    Par lehamster dans le forum XML/XSL et SOAP
    Réponses: 1
    Dernier message: 21/11/2006, 16h56
  4. Les fichiers de configuration de comptes avec Samba
    Par tomnie dans le forum Réseau
    Réponses: 4
    Dernier message: 18/03/2004, 09h30
  5. Problème avec les fichiers .JPG
    Par cprogil dans le forum Langage
    Réponses: 5
    Dernier message: 10/06/2003, 16h44

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