Entwickler-Ecke
WinForms - radioButton in einem anderen Formular aktualisieren
casban - Di 28.08.12 12:40
Titel: radioButton in einem anderen Formular aktualisieren
Hallo Zusammen,
ich habe ein Hauptformular
(Form1) aus den ich ein anderes Formular
(spielfeldDialog) aufmachen, den Radiobutton verändern und über
DialogResult wieder verlassen kann. Die Änderungen, hier die Größe des Hauptformulars, funktioniert auch einwandfrei. Nur wenn ich das Formular
spielfeldDialog dann wieder aufrufe, hat das Formular wieder die Standartwerte und nicht den Radiobutton für die aktuelle Größe aktiviert.
:?: :nixweiss:
Grüße CB
Moderiert von
Th69: Topic aus Programmierwerkzeuge verschoben am Di 28.08.2012 um 13:30
Ralf Jansen - Di 28.08.12 12:51
| Zitat: |
| Nur wenn ich das Formular spielfeldDialog dann wieder aufrufe |
Willst du uns damit sagen das du eine neuen spielfeldDialog erzeugst (mit new)? Dann ziehen wieder die zur Designzeit festgelegten Werte.
Wenn du Einstellungen über die Lebenszeit einer spielfeldDialog Instanz retten willst um sie auch auf eine andere spielfeldDialog Instanz anzuwenden musst du dir die schon woanders merken(irgendwo in einer Klasse im Speicher oder in den Usersettings oder ...) und bei jedem instanziieren von spielfeldDialog darauf wieder anwenden.
Palladin007 - Di 28.08.12 14:59
Wie Ralf schon sagte, musst du das wo anders speichern.
Ich finde, dafür bietet sich eine extra Klasse an, die einzelne Einstellungen für einen bestimmten Bereich (z.B. die Optik des Fensters) enthält.
Du gibst dem Fenster für die Einstellungen dann ein Objekt dieser Klasse weiter und wenn der Nutzer etwas um stellt, wird dies in diesem Objekt gespeichert.
Du kannst ja noch einbauen, dass die geänderten Daten erst nach einem Klick auf "Speichern" in das Objekt geschrieben werden oder dann sie auf der Festplatte hinterlegt werden. Im zweiten Fall bietet sich XML gut an, weil es leicht verständlich ist und der Nutzer dann auch selber daran etwas ändern kann. Das würde dann so Leute gefallen, die gerne alles ganz individuell haben und sich dann durch die Speicher-Dateien des Programms wühlen.
casban - Di 28.08.12 17:34
Hier sind erstmal meine beiden Methoden mit denen ich das versuche.
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26:
| Form1
private void spielfeldgrößeToolStripMenuItem_Click(object sender, EventArgs e) { Point neueGroesse = new Point(0,0); EinstellungenDialog neueWerte = new EinstellungenDialog(); if (neueWerte.ShowDialog() == DialogResult.OK) { neueGroesse = neueWerte.LiefereWert(); neueWerte.Close(); this.Width = neueGroesse.X; this.Height = neueGroesse.Y; this.Left = (Screen.PrimaryScreen.Bounds.Width - this.Width) / 2; this.Top = (Screen.PrimaryScreen.Bounds.Height - this.Height) / 2; zeichenflaeche = spielfeld.CreateGraphics(); setzeSpielfeld(); zeichenflaeche.Clear(spielfeld.BackColor); neuerBall(); |
und noch die andere die die geänderten Werte zurückliefert
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16:
| andere Form
public Point LiefereWert() { Point rueckgabe = new Point(0, 0); if (radioButton320.Checked == true) rueckgabe = new Point(320, 200); if (radioButton640.Checked == true) rueckgabe = new Point(640, 480); if (radioButton1024.Checked == true) rueckgabe = new Point(1024, 768); if (radioButtonMaximal.Checked == true) rueckgabe = new Point(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height); return rueckgabe; } |
Palladin007 - Di 28.08.12 18:59
Ist doch ok, aber wo ist da das Problem?
Es werden die Daten empfangen, im Main-Form eingetragen und gut is.
Danach gehen die aber verloren und wenn du die dann später wieder weiter nutzen willst, musst du sie z.B. global in der Klasse speichern, oder in eine Datei auslagern.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!