2017-02-14 7 views
-2

Ich habe ein Kontrollkästchen (Name: tarahi_algouritm) und eine Schaltfläche (Name: button1) auf meinem Formular (Name: frm_choose) .Ich möchte die neuesten Änderungen auf meiner Checkbox als Benutzer geklickt auf Der Button.it bedeutet, dass Benutzer das Programm ausführen und das Kontrollkästchen aktivieren und dann auf die Schaltfläche klicken und dann das Programm schließen. Wenn er/sie es erneut ausführt, sollte das Kontrollkästchen aktiviert sein. Andernfalls deaktiviert er das Kontrollkästchen und klickt auf die Schaltfläche und nach einem weiteren Lauf , Checkbox sollte deaktiviert sein.Anwendung Einstellung funktioniert nicht gut

Dazu setzen Sie in der Anwendungseinstellung (Tabellenteil) ein Kontrollkästchen (Name: s_tarahi_algouritm) und wählen USER in Bereichsteil .. wie ich sagte Änderungen gelten für Kontrollkästchen und s_tarahi_algouritm wird zum Speichern der letzten Änderungen an Kontrollkästchen verwendet. ich schrieb diese Codes:

private void frm_choose_Load(object sender, EventArgs e) 
    { 
     if (Properties.Settings.Default.s_tarahi_algouritm!=null) 
      tarahi_algouritm= Properties.Settings.Default.s_tarahi_algouritm; 

    } 

private void button1_Click(object sender, EventArgs e) 
    { 
     Properties.Settings.Default.s_tarahi_algouritm = tarahi_algouritm; 
     Properties.Settings.Default.Save(); 
    } 

aber Wenn ich Änderungen auf Checkbox machen und schließen sie die Debug- und Rerun es werden Änderungen nicht angewendet. was soll ich machen, wo ist das falsch Ich bin teilweise Anfänger also erklär es explizit. danke alle

+5

Ich schlage vor, dass Sie nur den Wert von "CheckBox.IsChecked" speichern. Scheint ziemlich ungewöhnlich, eine ganze 'CheckBox' in den Einstellungen zu speichern. – wkl

+0

Ich habe eine Menge checkbox.all die Informationen, die ich oben sagte, müssen auf ihnen gleich sein.Sagen Sie Ihre Lösung explizit durch den Code – Behnam

Antwort

0

ich viele Dinge wie getestet:

Properties.Settings.Default.Properties.Add(new System.Configuration.SettingsProperty("a")); 
     Properties.Settings.Default.Properties["a"].DefaultValue = "b"; 
     Properties.Settings.Default.Save(); 

es nicht Fehler hat, aber nicht speichern. In diesem Link:

C# Settings.Default.Save() not saving?

Beantwortet müssen Sie Properties.Settings.Default.Reload(); nach dem Speichern hinzufügen, ich habe das aber nicht verändert. Es scheint, niemand kennt die Antwort. (Ich habe viele Artikel gelesen).

Es sieht aus wie ein Krebs für mich! Ich empfehle Ihnen, Ihre Einstellungen einfach in einer XML-Datei zu speichern.

Below i fügen Sie eine einfache XML-Speichermethode:

using System.Xml.Linq; 

Und

 XElement settings; 
     try 
     { 
      settings = XElement.Load("settings.xml"); //beside the app .exe file 
     } 
     catch (Exception) // it is first time and you have not file yet. 
     { 
      settings = new XElement("settings"); 
      settings.Save("settings.xml"); 
     } 

Wenn Sie neues Element hinzufügen möchten:

 settings.Add(new XElement("firstKey", tarahi_algouritm.Checked.ToString())); 
     settings.Save("settings.xml"); 

Wenn Sie möchten, zu lesen oder zu bearbeiten Element:

 XElement settings = XElement.Load("settings.xml"); 
     string firstKey = settings.Element("firstKey").Value; //reading value 

     settings.Element("firstKey").Value = "New Value"; //Edit 
     settings.Save("settings.xml"); //Save 

Denken Sie daran, dass firstKey nur ein Name ist und Sie stattdessen andere Namen verwenden können.

+0

ist hier der Fehler: Eine nicht behandelte Ausnahme vom Typ 'System.Configuration.SettingsPropertyWrongTypeException' im System aufgetreten. dll Weitere Informationen: Die Einstellungseigenschaft 's_tarahi_algouritm' ist nicht kompatibel. – Behnam

+0

Tu genau das, was ich gesagt habe, es wird funktionieren. –

+0

ich kopierte und füge es ein und der Fehler ist passiert. – Behnam

0

Das Problem ist, die Einstellungen Dateien sind in zwei Teilen ausgeschrieben: eins zu den Anwendungseinstellungen (die Sie nicht speichern können) und das andere zu den Benutzereinstellungen (die Sie speichern können). Sie müssen die Benutzereinstellungen speichern (es wird in Ihr Verzeichnis c: \ Benutzer {Benutzer-ID} ... geschrieben).

Sehen Sie sich die am häufigsten gewählte Antwort auf Farzins Link an. Es erklärt das Problem auch.

Hier ist eine gründlichere Erklärung: App.config: User vs Application Scope

Hier ein Beispiel ist.

Ich habe eine Webformular-App erstellt und eine Einstellungsdatei hinzugefügt (TestSettings.settings).Ich fügte zwei Werte hinzu: enter image description here

Wenn Sie diese Anwendung ausführen, erstellt es eine Datei im Anwendungsverzeichnis mit dem gleichen Namen wie Ihre ausführbare Datei mit .config angehängt, die (unter anderem) ein Element und ein Element enthält. Diese Datei enthält jedoch nur die Anfangswerte. Wenn Sie den Wert unter dem Element ändern und Save() aufrufen, wird diese Datei nicht aktualisiert. Es wird eine Datei erstellen:

c: \ Benutzer {username} \ AppData \ Local {appname} {} {random_dir_name Version} \ user.config

Mein Code zu zeigen, war dies:

Console.WriteLine(TestSettings.Default["UserValue"]); 
TestSettings.Default["UserValue"] = "def"; 
TestSettings.Default.Save(); 
+0

HI @ dviljoen. In allen Links (ich floss bis zum Ende) kann man kein Live-Beispiel sehen. der erste Kommentar von einem: * Jedes Live-Beispiel wird geschätzt. * Aber es gibt nur nicht umfassende Erklärungen. –

Verwandte Themen