2

Sous Projet> Propriétés MyProject> Paramètres J'ai un paramètre d'application nommé MonDouble avec double type, la portée est Utilisateur, la valeur par défaut est 1.5.Les paramètres de l'application WinForms n'attribuent pas

J'ai essayé de le regarder, en passant par l'ensemble de l'application, et MessageBoxes pour afficher la valeur. J'ai maintenant commenté toutes les utilisations de celui-ci en excluant où j'essaie de définir une variable de niveau de classe (Form1). Cela ressemble à ceci:

double myDouble = Properties.Settings.Default.MyDouble; 

La valeur est toujours zéro. Si je MessageBox myDouble ou l'application définissant le résultat est zéro.

Certains paramètres d'application fonctionnent. J'ai appelé deux boîtes de message dans l'événement Form1_Shown. On utilise:

Properties.Settings.Default.MyDouble.ToString() 

et les autres utilisations:

Properties.Settings.Default.MyInt.ToString() 

La seconde sortie la valeur correcte.

Ce projet est une application WinForms écrite en C#. Sous Windows 10 et Visual Studio 2017. Le formulaire de ce projet a été copié à partir d'un projet précédent, mais je ne pense pas que cela puisse l'affecter. La valeur dans le projet précédent était la même. J'ai tapé ces paramètres d'application à la main. J'ai revérifié pour m'assurer que l'orthographe est correcte. J'ai supprimé le projet d'installation en vain. Nettoyé et reconstruit la solution ... nada. J'ai également vérifié le fichier app.config. Je ne vois rien de mal. Le voici:

<userSettings> 
     <MyProject.Properties.Settings> 
      <setting name="MyDouble" serializeAs="String"> 
      <value>1.5</value> 
      </setting> 
     </MyProject.Properties.Settings> 
    </userSettings> 

Est-ce que quelqu'un a des idées pourquoi et/ou comment résoudre ce problème?

+0

Avez-vous vérifié la portée de la mise en? – user12345

+0

@ user12345 J'ai fait. J'ai mis à jour ma question pour indiquer qu'elle a une portée d'utilisateur. Tous les paramètres d'application ont une portée utilisateur. – DavidG

+0

Lorsque la valeur par défaut est 1.5 et vous obtenez 0.0, vous avez enregistré le paramètre au moins une fois. Que ce n'est pas une valeur que vous aimez, eh bien, cela arrive. Vous pouvez modifier le fichier user.config pour corriger le problème (nous l'espérons temporaire). C'est juste un peu difficile à trouver dans c: \ users \ yourname \ appdata \ local \ nom de projet \ blablabla. –

Répondre

2

Je pense: quelque chose s'est mal passé.

Dans l'Explorateur de solutions, double-cliquez sur le fichier .settings. Le nom par défaut de ce fichier est Settings.settings. Dans le concepteur de paramètres, recherchez le nom (MyDouble) de votre paramètre. Chaque rangée représente un seul paramètre.

Voir: Using Settings in C#.

Vous avez:

<setting name="MyDouble" serializeAs="String"> 

Et vous écrivez:

double myDouble = Properties.Settings.Default.MyDouble; 

Convertir String-double ... peut-être mal?

Voir cette page: Managing Application Settings (.NET) et cette réponse: What is the best way to store user settings for a .NET application?

Essayez ce code:

Properties.Settings.Default.MyDouble = 1.5; 
Properties.Settings.Default.Save(); 

et après essayer ceci:

var myDouble = Properties.Settings.Default.MyDouble; 
+0

Le fichier settings.settings était correct. Les autres valeurs doubles et entières disent aussi que la chaîne sérialisera. Je n'ai aucune idée de ce que ça veut dire. Honnêtement, je n'ai jamais ouvert ce fichier jusqu'à présent. Le code que vous avez proposé le corrige. Je pense que j'étais dans un bug de studio visuel. J'ai couru votre code qui, bien sûr, définit une nouvelle valeur, l'enregistre. et maintenant ça marche. sans ce bloc de code inclus. Merci. Je sélectionne ceci comme la bonne réponse car cela a fonctionné une fois que j'ai essayé de forcer l'application à remplacer la valeur et à sauvegarder. – DavidG