Perché isnt Properties.Settings.Default di essere salvato?
-
22-09-2019 - |
Domanda
Ho scritto questo per testare rapidamente
Perché arent mie impostazioni stati salvati? La prima volta che viene eseguita questa Ho 3 elementi (vecchio) / 3 (correnti). La seconda volta che ottengo 3 (vecchio) / 5 (corrente), terza volta 5 (vecchio) / 5 (corrente).
Quando chiudo l'applicazione delle impostazioni completamente scomparire. Il suo 3 di nuovo quando lo eseguo. Ho fatto nessuna modifica alla app. Perché arent mie impostazioni stati salvati
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();
}
Soluzione
Si deve usare le proprietà esposte invece di mettere i dati nel contesto:
var saveData = MyApp.Properties.Settings.Default;
saveData.user = textBox1.Text;
saveData.pass = textBox2.Text;
Il contesto
fornisce informazioni contestuali che il provider può utilizzare quando persistente Impostazioni
ed è nella mia comprensione non utilizzato per memorizzare i valori di impostazione effettivi.
Aggiornamento: se non si desidera utilizzare l'editor delle impostazioni in Visual Studio per generare le proprietà forte tipizzato è possibile codificare da soli. Il codice generato da VS hanno una struttura come questa:
[UserScopedSetting]
[DebuggerNonUserCode]
[DefaultSettingValue("")]
public string SettingName
{
get { return ((string)(this["SettingName"])); }
set { this["SettingName"] = value; }
}
È possibile aggiungere facilmente più proprietà modificando il file Settings.Designer.cs.
Se non si desidera utilizzare le proprietà forte tipizzato è possibile utilizzare direttamente l'indicizzatore this[name]
. Allora il vostro esempio sarà simile a questa:
var saveData = MyApp.Properties.Settings.Default;
saveData["user"] = textBox1.Text;
saveData["pass"] = textBox2.Text;