2

J'ai écrit ceci pour tester rapidementPourquoi est-ce que les propriétés Properties.Settings.Default ne sont pas sauvegardées?

Pourquoi mes paramètres ne sont-ils pas sauvegardés? La première fois que je lance ceci, j'ai 3 (anciens)/3 (actuels) éléments. La deuxième fois que je reçois 3 (vieux)/5 (courant), troisième fois 5 (vieux)/5 (courant). Lorsque je ferme l'application, les paramètres disparaissent complètement. Son 3 encore quand je l'exécute. Je n'ai fait aucun changement à l'application. Pourquoi ne coûtent pas mes paramètres étant enregistrés

private void button2_Click(object sender, EventArgs e) 
    { 
     MyApp.Properties.Settings.Default.Reload(); 
     var saveDataold = MyApp.Properties.Settings.Default.Context; 
     var saveData = MyApp.Properties.Settings.Default.Context; 
     saveData["user"] = textBox1.Text; 
     saveData["pass"] = textBox2.Text; 
     MyApp.Properties.Settings.Default.Save(); 
    } 
+0

Btw, pourquoi plus de la moitié de vos questions sont sans réponse acceptée? –

Répondre

4

Vous devez utiliser les propriétés exposées au lieu de mettre vos données dans le contexte:

var saveData = MyApp.Properties.Settings.Default; 
saveData.user = textBox1.Text; 
saveData.pass = textBox2.Text; 

Le contexte

fournit des informations contextuelles qui la le fournisseur peut utiliser lorsqu'il persiste paramètres

et est, à ma connaissance, pas utilisé pour stocker les valeurs de réglage réelles.

Mise à jour: Si vous ne souhaitez pas utiliser l'éditeur de paramètres dans Visual Studio pour générer les propriétés typées en dur, vous pouvez le coder vous-même. Le code généré par VS ont une structure comme ceci:

[UserScopedSetting] 
    [DebuggerNonUserCode] 
    [DefaultSettingValue("")] 
    public string SettingName 
    { 
     get { return ((string)(this["SettingName"])); } 
     set { this["SettingName"] = value; } 
    } 

Vous pouvez facilement ajouter des propriétés en éditant le fichier Settings.Designer.cs.

Si vous ne souhaitez pas utiliser les propriétés typées, vous pouvez utiliser directement l'indexeur this[name]. Alors votre exemple ressemblera à ceci:

var saveData = MyApp.Properties.Settings.Default; 
    saveData["user"] = textBox1.Text; 
    saveData["pass"] = textBox2.Text; 
+0

thats ... pas génial :(. Donc j'ai besoin de créer les propriétés dans l'IDE ou puis-je le faire dans le code en quelque sorte? –

+0

Ajout d'une mise à jour de si vous ne voulez pas les propriétés générées automatiquement ... –

+0

Je ne peux pas faire de don de points, mais j'y ai jeté un coup d'œil, j'espérais que je pourrais avoir une NameValueCollection, mais cela ne semble pas possible, mais une version de chaîne est disponible, je suppose que les objets/boxing ne sont pas disponibles. champs (ATM j'aime juste écrire des champs en ligne et dans le code sur IDE) Je pourrais juste utiliser la collection de chaînes qui n'est pas mauvaise –

Questions connexes