Frage

Ich schrieb dies schnell Test

Warum Arent meine Einstellungen gespeichert werden? Das erste Mal, dass ich dies laufe ich habe 3 (alt) / 3 (Strom) Elemente. Das zweite Mal, wenn ich 3 (alt) / 5 (Strom), drittes Mal 5 (alt) / 5 (Strom).

Wenn ich die app schließen verschwinden die Einstellungen vollständig. Seine 3 wieder, wenn ich ausführen. Ich habe keine Änderungen an der App. Warum Arent meine Einstellungen gespeichert werden

    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();
    }
War es hilfreich?

Lösung

Sie sollten die freiliegenden Eigenschaften werden anstelle Ihre Daten im Rahmen der Umsetzung:

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

Der Kontext

  

bietet kontextuellen Informationen, die   kann der Anbieter verwenden, wenn persistierende   Einstellungen

und ist in meinem Verständnis der tatsächlichen Einstellwerte nicht verwendet zu speichern.

Update: , wenn Sie die Einstellungen Editor in Visual Studio nicht verwenden möchten, die stark typisierte Eigenschaften zu erzeugen, können Sie es selbst codieren. Der Code erzeugt durch VS eine Struktur wie folgt aussehen:

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

Sie können leicht weitere Eigenschaften hinzufügen, indem Sie die Settings.Designer.cs Datei bearbeiten.

Wenn Sie die stark typisierte Eigenschaften nicht verwenden möchten Sie die this[name] Indexer direkt nutzen können. Dann wird Ihr Beispiel wie folgt aussehen:

    var saveData = MyApp.Properties.Settings.Default;
    saveData["user"] = textBox1.Text;
    saveData["pass"] = textBox2.Text;
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top