Bonjour,
SVP pouvez-vous m'expliquer comment modifier (par Code) des données qui sont déjà stockées dans un fichier *.config ??!!!
merci d'avance.
Version imprimable
Bonjour,
SVP pouvez-vous m'expliquer comment modifier (par Code) des données qui sont déjà stockées dans un fichier *.config ??!!!
merci d'avance.
Tu peux utiliser le bout de code suivant :
Cependant le fichier de configuration n'est à mon avis pas le meilleur outil pour avoir des paramètres dynamiques...Code:
1
2
3 var appConfigFile = ConfigurationManager.OpenExeConfiguration(Application.ExecutablePath); appConfigFile.AppSettings.Settings["TonString"].Value = "La valeur que tu veux enregistrer"; appConfigFile.Save();
C'est pas fait pour ça, normalement un fichier .config n'est pas supposé être modifié par le programme qui l'utilise (sauf le user.config qui contient les paramètres utilisateurs, mais pour ça on utilise habituellement la classe de Settings générée par Visual Studio)
De toutes façons le fichier de config du programme est dans le répertoire du programme, donc souvent dans Program Files, et à moins d'être administrateur on ne peut pas écrire dans ce répertoire (du moins sous Windows Vista/7/8)
Les outils dont je parle, tomlev en a évoqué un : les Settings. Tu peux y accéder dans les Propriétés de ton projet. Il y a un onglet "Paramètres".
Tu peux choisir la portée (scope) de chaque paramètre : utilisateur ou application.
Une autre solution est de manipuler dans ton code un singleton afin de gérer les paramètres de l'application, et une classe qui permettra de gérer les paramètres utilisateurs.
j'ai travaillé avec un fichier Settings, il marche bien jusqu’à moment, mais je vois pas comment l'utiliser pour y stocker des tableaux ?!!!!! (je crois que c pas possible) :calim2:
Tu peux y mettre n'importe quel type qui est sérialisable en XML a priori. Par exemple si tu veux mettre un tableau d'entiers, dans le designer de settings tu choisis "Browse..." dans liste déroulante du type, et tu tapes "System.Int32[]". Ensuite tu peux éditer le contenu comme pour n'importe quelle collection
Dommage, je trouve pas ce "System.Int32" :roll:
est ce qu'il me faut ajouter une référence ?
merci d'avance.
Regarde ce lien : http://www.codeproject.com/Articles/...ngs-Class-in-C
[EDIT] : c'est dans la colonne "Type" qu'il faut choisir le type voulu, Int32[] par exemple.
je l'ai déjà fait, il me répond toujours par "Ce type n'est pas défini" !!!
:roll:
j'ai cherché dans toutes les biblio de "Parcourir", il n'est existe pas un "Systeme.int" :o
Bizarre, à un moment j'avais réussi à le faire, mais là ça fonctionne plus :?
Bon, voilà une solution qui marche, même si c'est pas très pratique :
- crée un setting de type int (accessible directement dans la liste déroulante)
- ferme les settings
- ouvre le fichier Settings.settings avec un éditeur XML, et remplace "System.Int32" par "System.Int32[]"
- referme le fichier, et rouvre les settings normalement
Tu peux maintenant ajouter des éléments au tableau via le designer de settings...
Voilà, j'ai créé une variable (via le setting desiner) nomée "table" de type int, quand j'ai ouvert le fichier XML c'est ce que j'ai trouvé 8O :
aucun "system.int" !!!Code:
1
2
3 <setting name="table" serializeAs="String"> <value>1</value> </setting>
NB: mon fichier Settings est inclue dans le dossier Properties !
Bonne fin de journée.
Ce que tu montres ça ressemble plutôt au fichier app.config... Le fichier qu'il faut modifier s'appelle Settings.settings, et il contient quelque chose comme ça :
Code:
1
2
3 <Setting Name="table" Type="System.Int32" Scope="User"> <Value Profile="(Default)">0</Value> </Setting>
Bizarre il me donne pas ça !!:calim2:
je viens de recréer un autre fichier .Settings mais aucune différence !!
Bon, mon but est de sauvegarder les dernière modifications effectuées à travers une fenêtre C#(Texbox) afin de les récupérer pendant le lancement suivant de l'application.
y a t-il une autre solution ?!
Bizarre ton histoire... tu utilises quelle version de Visual Studio ?
Mais je pense que tu n'ouvres pas le bon fichier, parce que dans ce que tu montres il n'y a aucune indication sur le type du setting... or il a besoin de cette info pour générer le fichier C# associé.
Bah tu peux enregistrer un fichier texte, ou XML, ou n'importe quoi, dans le répertoire de données de l'application (AppData), et le recharger au lancement suivant...