2010-08-14 4 views
3

Dans les propriétés du projet, je créé un cadre comme celui-ciparamètres de l'utilisateur ne sont pas enregistrés (Settings.Default.Save();)

NumberOfUsers int User 10 

Les colonnes sont Nom, Type, étendue et valeur.

Ensuite, il existe un ComboBox où l'utilisateur peut définir un 'NumberOfUsers'. Ce combo a l'événement SelectedIndexChanged où je sauvegarde les modifications chaque fois que l'utilisateur change la valeur de combo. Voici le code:

Settings.Default.NumberOfUsers = combo1.SelectedIndex; 
Settings.Default.Save(); 

La forme avec ce combo est appelé à partir du parent comme frm.ShowDialog(); et Constructor de la forme de l'enfant que j'essaie de définir l'index sélectionné combo basé sur l'entrée Paramètres

combo1.SelectedIndex = Settings.Default.NumberOfUsers; 

Cependant , cela NE FONCTIONNE PAS, c'est-à-dire que le combo ne tire pas la valeur du réglage, mais il a plutôt la valeur par défaut 0 comme index sélectionné.

Quelqu'un sait où je fais erreur?

+0

Êtes-vous que les paramètres ne sont pas enregistrés? Peut-être que c'est juste l'affectation à la combobox qui ne fonctionne pas. Utilisez le débogueur pour rompre à la ligne 'combo1.SelectedIndex = Settings.Default.NumberOfUsers' et vérifiez si' NumberOfUsers' a la bonne valeur. – Timwi

+0

Lorsque je ferme l'application, j'ouvre le fichier conf du projet et la zone Valeur est toujours celle par défaut. Qu'est-ce que ça veut dire? Problème avec enregistrer après tout? – trnTash

Répondre

0

Peut-être de cette façon:

Properties.Settings.Default.NumberOfUsers = combo1.SelectedIndex; 
Properties.Settings.Default.Save(); 
combo1.SelectedIndex = Properties.Settings.Default.NumberOfUsers; 
+0

Ce n'est pas le cas car j'ai des espaces de noms de propriétés en utilisant l'instruction – trnTash

4

Je pense que vous ne faites aucune erreur. Pour autant que je sache, VS regénère également le fichier de configuration pendant la construction. Je voudrais l'essayer sur une machine d'essai.
Il enregistre les paramètres utilisateur dans AppData de votre utilisateur (local ou itinérant?) Sous quelque chose comme ceci:

AppData \ [Local_or_Roaming] \ YourCompanyName \ yourprogram.exe_Url _ [...] \ 1.0.0.0 \ user .config

Le long nom de fichier au milieu sera sg différent mais je suppose que vous le trouverez facilement. Jetez un oeil à ce fichier et voir s'il stocke les nouvelles valeurs ou non. Je l'utilise à plusieurs endroits et dans l'environnement de production ça fonctionne bien. Pour être honnête, sur la machine de développement je ne l'ai jamais fait fonctionner.

+0

Bien sûr, kofucii a raison, vous avez également manqué des propriétés. – Hudgi

+0

A ne pas manquer parce que je l'ai dans l'utilisation de l'instruction :) – trnTash

+0

OK, c'est un moyen possible. :) En ce qui concerne votre problème, l'avez-vous vérifié dans le dossier AppData? Comme je l'ai mentionné, les paramètres de niveau utilisateur ne sont pas stockés dans le fichier exe.config. Seuls les paramètres de niveau d'application y sont stockés. – Hudgi

0

Entrez-vous la nouvelle valeur de NumberOfUsers dans la zone de liste déroulante ou en la sélectionnant dans la liste déroulante?
Si vous tapez la valeur SelectedIndex ne changera pas, aucun événement ne sera déclenché.

est également la zone de liste déroulante étant avec les valeurs allant de 0 à 10 ou avez-vous du code pour gérer ArgumentOutOfRangeExceptions

Questions connexes