[VB.Net 2005] [My.Settings] Problème d'enregistrement des paramètres
Bonjour à tous, :D
Voilà j'ai un petit souci.
J'ai crée des paramètres String "Utilisateur" dans mon application VB .NET afin de stocker des chemins de dossiers.
En générant ma solution j'obtiens donc mon exécutable et le .config.exe correpondant à l'ensemble de ces paramètres.
Dans mon logiciel je veux que l'utilisateur puisse modifier ces valeurs sans qu'il ait à modifier à la main le .exe.config.
J'ai donc crée une interface basée sur un DataGridView avec une colonne listant le nom des Paramètres et une seconde colonne listant la valeur lue dans My.Settings.
Après changement dans le DataGridView je lance cet evènement:
Code:
1 2 3 4 5 6 7 8 9 10 11
|
Private Sub CDataGridViewListeDossier_CellEndEdit(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles Me.CellEndEdit
Try
'On sauvegarde le contenu dans le fichier de Paramétrage
My.Settings.LastChanged = Today
My.Settings.Item(Me.Rows(CurrentCell.RowIndex).Cells(NOM_COLONNE_1).Value) = Me.CurrentCell.Value
My.Settings.Save()
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub |
Et là aucune modification est effectuée dans le .exe.config, par contre la nouvelle valeur est toujours en mémoire (My.Settings.Item("Parametre1")).
En connaissez vous les raisons?
En vous remerciant d'avance!
my.settings conserve du cache
bonjour
c'est ce que mentionnes REMY_74 qui est bon.
Le fichier app.exe.config read-only heureusement sert à stocker "les parametres par defaut lors de l'installation" ou à les retablir c'est pour cela qu'on trouve dans l'intellisense My.MySettings.
Exemple :
----------
Code:
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 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89
|
'LE POVRE USER NE PEUT PAS MODIFIER "VOS PARAMETRES PAR DEFAUT DU
'FICHIER APP.EXE.CONFIG DE L'APPLI DEVELOPPE PAR VOS SOINS CHER
'DEVELOPPEUR MAIS PEUT LES LIRES
'
'MAIS PEUT LES PERSONNALISER ET LES SAUVEGARDER DANS
'SON DOSSIER UTILISATEUR DANS FICHIER User.Config
'DE SON DOSSIER UTILISATEUR.
'
Public Class Form1
Dim nomApp As String
Dim nomDepartement As String
Dim intCodeZIP As Integer
Public Sub New()
' Cet appel est requis par le Concepteur Windows Form.
InitializeComponent()
' Ajoutez une initialisation quelconque après l'appel InitializeComponent().
'1.L'UTILISATEUR LIT UN PARAMETRE APPLICATION(MySettings) "Par Defaut" à partir du fichier MonApp.exe.config
Me.nomApp = My.MySettings.Default.AppRemy
'2.L'UTILISATEUR LIT UN PARAMETRE UTILISATEUR(user) "Par Defaut" à partir du fichier MonApp.exe.config
Me.intCodeZIP = My.MySettings.Default.CodeZip
Me.nomDepartement = My.MySettings.Default.Departement
'L'UTILISATEUR PEUT MODIFIER LES PARAMETRES -UNIQUEMENT UTILISATEURS- ET LES ENREGISTRER DANS LE DOSSIER D'INSTALLATION DE L'APPLICATION
'C:\Documents and Settings\Remy\Local Settings\Application Data\DOSSIERINSTALLATION\MonApp.exe_Url_gdbrpuynuq1pr4k0blydqajyidj044d5\1.0.0.0
'le fichier "caché" s'appelle USER.CONFIG.
'Il utilise la syntaxe Settings
intCodeZIP = 78
nomDepartement = "Yvelines"
My.Settings.CodeZip = intCodeZIP
My.Settings.Departement = nomDepartement
'3.L'UTILISATEUR LIT A NOUVEAU "SES" PARAMETRE UTILISATEUR(user) "Personnalises cette fois" À PARTIR DU FICHIER USER.CONFIG
'REMARQUEZ LA SYNTAXE SANS "default"
Me.intCodeZIP = My.Settings.CodeZip
Me.nomDepartement = My.Settings.Departement
'IL NE PEUT PAS MODIFIER UN PARAMETRE DE TYPE APPLICATION
'nomApp = "Remy_à Grignon"
'My.Settings.AppRemy = nomApp ceci est refuse à la compilation.
End Sub
'VOUS L'AVEZ SERIEUSEMENT LIMITE AVEC VOS PARAMETRES DEVELOPPEUR!!!.
End Class
'ci-apres le dossier MonApp.exe.config
<!--parametre Utilisateurs-->
<userSettings>
<MonApp.My.MySettings>
<setting name="Departement" serializeAs="String">
<value>Seine-Saint-Denis</value>
</setting>
<setting name="CodeZip" serializeAs="String">
<value>92</value>
</setting>
</MonApp.My.MySettings>
</userSettings>
<!--parametre Application-->
<applicationSettings>
<MonApp.My.MySettings>
<setting name="AppRemy" serializeAs="String">
<value>Drawing</value>
</setting>
</MonApp.My.MySettings>
</applicationSettings>
'ci-apres le dossier User.Config integral de l'exemple
'il ne contient que la section userSettings modifiee
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<userSettings>
<MonApp.My.MySettings>
<setting name="Departement" serializeAs="String">
<value>Seine-Saint-Denis</value>
</setting>
<setting name="CodeZip" serializeAs="String">
<value>92</value>
</setting>
</MonApp.My.MySettings>
</userSettings>
</configuration> |
NB: qu'on se le dise !!!!
les parametres de Type Application sont stockes dans MonApp.exe.config et ne peuvent pas etre -bien evidemment- modifies.
La raison est que ce serait DISASTROUS et donc empecher 2 utilisateurs lambda utilisant la meme appli sur la meme meme machine de modifier ses parametres.
Par contre les parametres Utilisateurs( 2eme type) sont personnalises "per user" et donc sauvegardes dans le fichier User.Config dans chaque dossier Utilisateur.
bon code.....