Benutzer mit den meisten Antworten
Checkbox Speichern C#

Frage
-
Hallo erstmal also ich wollte jetzt von C++ in C# wechseln und habe versuch ein programm zu übernehmen was ich in C++ geschrieben bis jetzt bin ich klar gekommen google war mir eine große Hilfe :P
Aber jetzt steck ich fest und zwar hier
Diesen C++ Code wollte ich in C# übersetzen
Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing If CheckBox2.Checked() = True Then My.Settings.WoW = TextBox3.Text My.Settings.Save() Else My.Settings.WoW = "" My.Settings.Save() End If My.Settings.CB_save = True My.Settings.Save()
So das hab ich daraus gemacht.
private void Form1_Formclosing(object sender, FormClosingEventArgs e) { if (checkBox2.Checked == true) Properties.Settings.Default.WoWPfad = textBox3.Text; Properties.Settings.Default.Save(); Properties.Settings.Default.CB_Save = true; Properties.Settings.Default.Save(); }
Aber komischerweise speichert mein Programm die Checkbox und den Text nicht was er jedoch im C++ Programm macht.
hab den Code auch mehrmals schon umgeschrieben.
Ich bin Langsam am verzweifeln.
ich hoffe hier kann mir wer helfen.
Antworten
-
Hallo,
zunächst: was Du als C++ bezeichnest, ist in Visual Basic verfaßt.
Und Deine "Übersetzung" ist für sich genommen bis auf die fehlenden Klammern richtig,
auch wenn einmal Speichern hier ausreichend wäre:if (checkBox2.Checked == true) { Properties.Settings.Default.WoWPfad = textBox3.Text; Properties.Settings.Default.CB_Save = true; Properties.Settings.Default.Save(); }
Nur muß es sich bei der Einstellung (WoWPfad, CBSave) um Benutzereinstellungen handeln
(und keine Anwendungseinstellungen), denn nur die können zur Laufzeit verändert
und gespeichert werden. Schau also mal unter den Projekt-Eigenschaften nach.Ein C# Beispiel mit weiteren Erläuterungen findest Du u. a. hier:
http://www.codeproject.com/KB/cs/UserSettings.aspxGruß Elmar
- Als Antwort markiert Thorsten DörflerEditor Mittwoch, 23. Juni 2010 20:44
-
Hallo,
nein mit der Express hat das nicht zu tun, genausowenig wie mit der Sprache -
das .NET Framework ist überall gleich!
Genausowenig wie es an Deinem unangemessenen Tonfall liegen dürfte ;-)Baue in Deinem Test-Formular ein Load-Ereignis:
private void Form1_Load(object sender, EventArgs e) { textBox1.Text = Properties.Settings.Default.WoWPfad; // Erfordert einen Verweis auf System.Configuration.dll string configFileName = System.Configuration.ConfigurationManager.OpenExeConfiguration( System.Configuration.ConfigurationUserLevel.PerUserRoamingAndLocal).FilePath; if (!String.IsNullOrEmpty(configFileName)) { Console.WriteLine("Pfad: {0}", configFileName); Console.WriteLine("Inhalt: {0}", System.IO.File.ReadAllText(configFileName)); } else { Console.WriteLine("Keine Benutzerkonfiguration gefunden"); } }
Ein mögliches Problem ist, dass Benutzereinstellungen je Version gespeichert werden.
Und wenn Du Deine Anwendung "verteilst" müssen Benutzereinstellungen via Upgrade
mitgezogen werden. Was aber bei einem neuen Projekt -solange Du nicht überall
dran rumgebastelst hast - nicht passiert.Meine Empfehlung: Teste Deinen Code an einem neuen Projekt!
Funktioniert er, so übernehme ihn ins bestehende (so es denn lohnt)
und tritt der Fehler wiederum auf, so prüfe, was Du sonst noch alles
gemacht hast.Ein weiterer Link: Exploring Secrets of Persistent Application Settings
Gruß Elmar
- Als Antwort vorgeschlagen Robert BreitenhoferModerator Mittwoch, 23. Juni 2010 08:35
- Als Antwort markiert Thorsten DörflerEditor Mittwoch, 23. Juni 2010 20:44
-
Hallo,
an dem Code an sich ist nichts auszusetzen, wie (nach den den Korrekturen)
auch an Deinem Ausgangsbeispiel.Nur wo glaubst Du die user.config zu finden?
Sie wird nicht im Programm (BIN)-Verzeichnis gespeichert, sondern unter den
lokalen Benutzerdaten. Das hatte ich versucht, mit dem kleinen Codeschnipsel
zu ConfigurationManager.OpenExeConfiguration zu zeigen.Auch spielen dabei die Einstellungen unter den Assembly-Informationen
wie CompanyName und ProductName eine Rolle.
Und es ist ein Unterschied, ob Du die Anwendung im Debug-Modus oder
als alleinstehende Anwendung ausführst. In allen Fällen wird ein neuer
Pfadname für die Konfigurationsdateien erzeugt.Damit Du weiterkommst habe ich ein Beispielprojekt zusammengestellt:
http://www.elmarboye.de/download/SaveSettings.zip
beachte dass im Pfad u. a. mein Name vorkommt (was Du tunlichst ändern solltest)!
Gruß Elmar
Gruß Elmar
- Als Antwort markiert ATTA92 Dienstag, 22. Juni 2010 15:19
- Tag als Antwort aufgehoben ATTA92 Dienstag, 22. Juni 2010 18:05
- Als Antwort vorgeschlagen Robert BreitenhoferModerator Mittwoch, 23. Juni 2010 08:35
- Als Antwort markiert Thorsten DörflerEditor Mittwoch, 23. Juni 2010 20:44
-
Fehler selbst entdeckt Form_Closing war nicht definiert in der Designer.cs .....
Aber wie gesagt jeder anfang ist schwer ich bin neu in der sprache und will das ja lernen Elmar da musste die leutz nicht gleich demotivieren es gibt auch leute die lust haben was neues zu lernen und bei den sprüchen dann gleich aufgeben.
Zum glück bin ich nich son Mensch :P
- Als Antwort markiert ATTA92 Mittwoch, 23. Juni 2010 19:55
Alle Antworten
-
Hallo,
zunächst: was Du als C++ bezeichnest, ist in Visual Basic verfaßt.
Und Deine "Übersetzung" ist für sich genommen bis auf die fehlenden Klammern richtig,
auch wenn einmal Speichern hier ausreichend wäre:if (checkBox2.Checked == true) { Properties.Settings.Default.WoWPfad = textBox3.Text; Properties.Settings.Default.CB_Save = true; Properties.Settings.Default.Save(); }
Nur muß es sich bei der Einstellung (WoWPfad, CBSave) um Benutzereinstellungen handeln
(und keine Anwendungseinstellungen), denn nur die können zur Laufzeit verändert
und gespeichert werden. Schau also mal unter den Projekt-Eigenschaften nach.Ein C# Beispiel mit weiteren Erläuterungen findest Du u. a. hier:
http://www.codeproject.com/KB/cs/UserSettings.aspxGruß Elmar
- Als Antwort markiert Thorsten DörflerEditor Mittwoch, 23. Juni 2010 20:44
-
Hallo,
Hi ja das sind Benutzer einstellungen und die klammern hab ich auch hinzugefügt aber trotzdem funktioniert es nicht er speichert nix.
Wie stellst Du denn fest, dass nichts gespeichert wird?
Wie sieht Deine Funktion zum Auslesen der Einstellungen aus?
Und nein, mit der Express Edition hat das nichts zu tun.
Thorsten Dörfler
Microsoft MVP Visual Basic
vb-faq.de -
Hallo,
nein mit der Express hat das nicht zu tun, genausowenig wie mit der Sprache -
das .NET Framework ist überall gleich!
Genausowenig wie es an Deinem unangemessenen Tonfall liegen dürfte ;-)Baue in Deinem Test-Formular ein Load-Ereignis:
private void Form1_Load(object sender, EventArgs e) { textBox1.Text = Properties.Settings.Default.WoWPfad; // Erfordert einen Verweis auf System.Configuration.dll string configFileName = System.Configuration.ConfigurationManager.OpenExeConfiguration( System.Configuration.ConfigurationUserLevel.PerUserRoamingAndLocal).FilePath; if (!String.IsNullOrEmpty(configFileName)) { Console.WriteLine("Pfad: {0}", configFileName); Console.WriteLine("Inhalt: {0}", System.IO.File.ReadAllText(configFileName)); } else { Console.WriteLine("Keine Benutzerkonfiguration gefunden"); } }
Ein mögliches Problem ist, dass Benutzereinstellungen je Version gespeichert werden.
Und wenn Du Deine Anwendung "verteilst" müssen Benutzereinstellungen via Upgrade
mitgezogen werden. Was aber bei einem neuen Projekt -solange Du nicht überall
dran rumgebastelst hast - nicht passiert.Meine Empfehlung: Teste Deinen Code an einem neuen Projekt!
Funktioniert er, so übernehme ihn ins bestehende (so es denn lohnt)
und tritt der Fehler wiederum auf, so prüfe, was Du sonst noch alles
gemacht hast.Ein weiterer Link: Exploring Secrets of Persistent Application Settings
Gruß Elmar
- Als Antwort vorgeschlagen Robert BreitenhoferModerator Mittwoch, 23. Juni 2010 08:35
- Als Antwort markiert Thorsten DörflerEditor Mittwoch, 23. Juni 2010 20:44
-
Hallo,
nein mit der Express hat das nicht zu tun, genausowenig wie mit der Sprache -
das .NET Framework ist überall gleich!
Genausowenig wie es an Deinem unangemessenen Tonfall liegen dürfte ;-)Baue in Deinem Test-Formular ein Load-Ereignis:
private void Form1_Load(object sender, EventArgs e) { textBox1.Text = Properties.Settings.Default.WoWPfad; // Erfordert einen Verweis auf System.Configuration.dll string configFileName = System.Configuration.ConfigurationManager.OpenExeConfiguration( System.Configuration.ConfigurationUserLevel.PerUserRoamingAndLocal).FilePath; if (!String.IsNullOrEmpty(configFileName)) { Console.WriteLine("Pfad: {0}" , configFileName); Console.WriteLine("Inhalt: {0}" , System.IO.File.ReadAllText(configFileName)); } else { Console.WriteLine("Keine Benutzerkonfiguration gefunden" ); } }
Und wenn Du Deine Anwendung "verteilst" müssen Benutzereinstellungen via Upgrade
mitgezogen werden. Was aber bei einem neuen Projekt -solange Du nicht überall
dran rumgebastelst hast - nicht passiert.Meine Empfehlung: Teste Deinen Code an einem neuen Projekt!
Funktioniert er, so übernehme ihn ins bestehende (so es denn lohnt)
und tritt der Fehler wiederum auf, so prüfe, was Du sonst noch alles
gemacht hast.Ein weiterer Link: Exploring Secrets of Persistent Application Settings
Gruß Elmar
Hi Sorry mein Tonfall ist nicht böse gemeint meine rechtschreibung ist auch nicht die beste ich weiss xDAlso nich glaich von mri böse nehmen wenn was negativ gemeint ist sage ich das direkt raus ich danke dir schonmal ich teste das jetzt mal
-
Erstmall hab ich deinen Code benutzt hat wieder nicht geklappt habs dummerweise in meiner Haupt Datei benutzt und dannach konnt ich zie verschrotten xD Egal macht nix ist ja schnell wieder alles gemacht.
Also hat nicht geklappt danach hab ich mal auf der seite die du mir verlinkt hast nachgelesen und ausprobiert.
Hier ma der Code
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace WindowsFormsApplication1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Form1_FormClosing(object sender, FormClosingEventArgs e) { SaveToFile(); } private void Form1_Load(object sender, EventArgs e) { textBox1.Text = Properties.Settings.Default.Login; textBox2.Text = Properties.Settings.Default.PW; checkBox1.Checked = Properties.Settings.Default.CB_Save; } private void SaveToFile() { if (checkBox1.Checked == true) { Properties.Settings.Default.CB_Save = checkBox1.Checked; Properties.Settings.Default.Login = textBox1.Text; Properties.Settings.Default.PW = textBox2.Text; Properties.Settings.Default.Save(); } } } }
Leider war das auch kein erfolg bin wieder am anfang xD das funktioniert auch nicht also er erstellt noch nicht mal mehr die user.config.
Langsam geht das mir auf den Sack :P
Aber aller anfang ist schwer ne ^^
vielleicht kannst du oder jemand anders ma gucken was man an dem Code verändern müsste das es Klappt das würde mir denk ich mal am meisten helfen.
Ist nicht böse gemeint ich bin dankbarr für antworten ich probier auch alles aus. ^^
Schonmal ein danke im vorraus.
-
Hallo,
an dem Code an sich ist nichts auszusetzen, wie (nach den den Korrekturen)
auch an Deinem Ausgangsbeispiel.Nur wo glaubst Du die user.config zu finden?
Sie wird nicht im Programm (BIN)-Verzeichnis gespeichert, sondern unter den
lokalen Benutzerdaten. Das hatte ich versucht, mit dem kleinen Codeschnipsel
zu ConfigurationManager.OpenExeConfiguration zu zeigen.Auch spielen dabei die Einstellungen unter den Assembly-Informationen
wie CompanyName und ProductName eine Rolle.
Und es ist ein Unterschied, ob Du die Anwendung im Debug-Modus oder
als alleinstehende Anwendung ausführst. In allen Fällen wird ein neuer
Pfadname für die Konfigurationsdateien erzeugt.Damit Du weiterkommst habe ich ein Beispielprojekt zusammengestellt:
http://www.elmarboye.de/download/SaveSettings.zip
beachte dass im Pfad u. a. mein Name vorkommt (was Du tunlichst ändern solltest)!
Gruß Elmar
Gruß Elmar
- Als Antwort markiert ATTA92 Dienstag, 22. Juni 2010 15:19
- Tag als Antwort aufgehoben ATTA92 Dienstag, 22. Juni 2010 18:05
- Als Antwort vorgeschlagen Robert BreitenhoferModerator Mittwoch, 23. Juni 2010 08:35
- Als Antwort markiert Thorsten DörflerEditor Mittwoch, 23. Juni 2010 20:44
-
Hab zwar jetzt das geraft wie es funktionieren soll aber bei mir klappts doch wieder nicht xD er speichert immer noch nix ab -.-
bei deinem upload hat er die user.config gespeichert.
Also ich meine Genau das er überhaupt keine User.config speichert ich raff das echt nicht xD
Ich wusste schon vroher wo er sie speichert aber leider hat er ja keine gespeichert und des macht der immernoch nicht.
Langsam werde ich kire ich würde die sprache echt gern mit selbstversuchen lernen aber wenn noch nicht mal das geht hmm.
sicher das es nicht an der Express version liegt ??? Oder gibt es irgendwo versteckt in den Application settings noch die checkbox beim herunterfahren speichern ??? die muss man ja bei 2008 express Visual Basic anhacken das My.Settings gesavt werden. -
Hallo,
noch einmal: Es liegt nicht an .NET und auch nicht an den Express Editionen.
Die CheckBox in den Visual Basic Einstellungen bewirkt nichts weiter als das
bewußte Properties.Default.Save aufzurufen - C# Programmierer traut
man zu, es selbst zu tun.Und willst Du wirklich Erfolge erzielen, suche die Fehler in Deinem Code -
denn in 99,9 % (und mehr) aller Fälle hat man vermeintlichen Bugs selbst
programmiert.Wenn Du Dich nicht mit C# anfreunden kannst, bleibe bei Visual Basic.
Denn damit kann man genauso gute Programme schreiben.Gruß Elmar
-
Hallo,
noch einmal: Es liegt nicht an .NET und auch nicht an den Express Editionen.
Die CheckBox in den Visual Basic Einstellungen bewirkt nichts weiter als das
bewußte Properties.Default.Save aufzurufen - C# Programmierer traut
man zu, es selbst zu tun.Und willst Du wirklich Erfolge erzielen, suche die Fehler in Deinem Code -
denn in 99,9 % (und mehr) aller Fälle hat man vermeintlichen Bugs selbst
programmiert.Wenn Du Dich nicht mit C# anfreunden kannst, bleibe bei Visual Basic.
Denn damit kann man genauso gute Programme schreiben.Gruß Elmar
Jeder anfang ist schwer.Ja der misst ist ja nur das ich einfach keinen fehler finde und auch der editor findet keine fehler das problem liegt wie gesagt dabei das er mi9r noch nicht mall einen ordner von der datei erstellt wodrine sich die user.config befindet.
-
Fehler selbst entdeckt Form_Closing war nicht definiert in der Designer.cs .....
Aber wie gesagt jeder anfang ist schwer ich bin neu in der sprache und will das ja lernen Elmar da musste die leutz nicht gleich demotivieren es gibt auch leute die lust haben was neues zu lernen und bei den sprüchen dann gleich aufgeben.
Zum glück bin ich nich son Mensch :P
- Als Antwort markiert ATTA92 Mittwoch, 23. Juni 2010 19:55
-
Hallo,
ich wollte Dich nicht demotivieren... verwechsle nicht die Hinweise darauf,
dass Du an der falschen Stelle suchst, damit.
Und nein, ich klopfe mir nicht auf die Schulter, dass ich Recht gehabt hätte -
das sind nur selbst gemachte Erfahrungen.Gruß Elmar