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();
    }
È stato utile?

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;
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top