#

WPF: Application Settings

Aufgabe: ich möchte einzelne Werte einer Anwendung mittels Settings speichern
Im Projektmappen-Explorer kann man unter Properties->Settings.settings Einstellungen von Vorgabewerten vorgeben und verwalten.
Wenn man eine Variable erstellt und dann den Bereich einstellt, kann man
Den Bereich auf: Anwendung oder Benutzer einstellen

Sobald ich den Bereich auf Benutzer einstelle, kann ich den Wert zur Laufzeit ändern. Bei der Einstellung auf Anwendung kann ich allerdings nichts zur Laufzeit schreiben.


Lesen der Werte aus Settings ist kein Problem:

private void Window_Initialized(object sender, EventArgs e)
{
if(Properties.Settings.Default.Start_with_Windows == true)
{ optStartWithWindows.IsChecked = true ; }
else
{ optStartWithWindows.IsChecked = false; }

if (Properties.Settings.Default.Show_Infos == true)
{ optShow_Infos.IsChecked = true; }
else
{ optShow_Infos.IsChecked = false; }

}


Allerdings kann ich die Werte nicht zur Laufzeit ändern, wenn ich den Bereich auf Anwendung stelle

private void optStartWithWindows_Click(object sender, RoutedEventArgs e)
{
if (optStartWithWindows.IsChecked==true )
{
Properties.Settings.Default.Start_with_Windows = true;
}
else
{
Properties.Settings.Default.Start_with_Windows = false;
}
}


Der Compiler sagt mir dann schon bei der Erstellung, dass die Zuweisung zur Laufzeit nicht möglich ist.


Unter MSDN steht zu den Settings:
https://msdn.microsoft.com/de-de/library/a65txexh.aspx
Anwendungsspezifische Einstellungen können für Informationen wie die URL eines Webdiensts oder eine Datenbankverbindungszeichenfolge verwendet werden.
Diese Werte werden der Anwendung zugeordnet. Deshalb können Benutzer sie zur Laufzeit nicht ändern.

Benutzerspezifische Einstellungen können für Informationen, z. B. die Beibehaltung der letzten Position eines Formulars oder eine Schriftarteinstellung, verwendet werden.
Die Benutzer können diese Werte zur Laufzeit ändern.

Problem: allerdings gehen die Werte dann immer nach dem Schließen und wieder Öffnen verloren.
Wie kann ich die Wert fest auch nach einem Programm-Neustart erhalten?
Die Lösung steht ebenfalls auf der Seite:
Sie müssen die Save-Methode dieser Wrapperklasse explizit aufrufen, damit die Benutzereinstellungen erhalten bleiben. Hierfür verwenden Sie normalerweise den Closing-Ereignishandler des Hauptformulars. Das folgende Visual C#-Beispiel zeigt einen Aufruf der Save-Methode.


Lösung:
Properties.Settings.Default.Save();

Beispielcode


private void optShow_Infos_Click(object sender, RoutedEventArgs e)
{
//< Setting aendern >
if (optShow_Infos.IsChecked == true)
{
Properties.Settings.Default.Show_Infos = true;
}
else
{
Properties.Settings.Default.Show_Infos = false;
}
//</ Setting aendern >

//< Settings speichern >
Properties.Settings.Default.Save();
//</ Settings speichern >
}

Mobile

.

soap2day