Autor Beitrag
casban
Hält's aus hier
Beiträge: 10

Window 8.1 Professional
C# (VS 2013 Ultimate Edition)
BeitragVerfasst: Di 28.08.12 12:40 
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 user profile iconTh69: Topic aus Programmierwerkzeuge verschoben am Di 28.08.2012 um 13:30
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4708
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1282
Erhaltene Danke: 182

Windows 11 x64 Pro
C# (Visual Studio Preview)
BeitragVerfasst: 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 Threadstarter
Hält's aus hier
Beiträge: 10

Window 8.1 Professional
C# (VS 2013 Ultimate Edition)
BeitragVerfasst: Di 28.08.12 17:34 
Hier sind erstmal meine beiden Methoden mit denen ich das versuche.

ausblenden 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();
            //wenn der Dialog über die Ok-Schaltfläche beendet wird
            if (neueWerte.ShowDialog() == DialogResult.OK)
            {
                //die Größe holen
                neueGroesse = neueWerte.LiefereWert();                   
                //den Dialog wieder schließen
                neueWerte.Close();
                //Das Formular ändern
                this.Width = neueGroesse.X;
                this.Height = neueGroesse.Y;
                //neu ausrichten
                this.Left = (Screen.PrimaryScreen.Bounds.Width - this.Width) / 2;
                this.Top = (Screen.PrimaryScreen.Bounds.Height - this.Height) / 2;
                //die Zeichenfläche neu beschaffen
                zeichenflaeche = spielfeld.CreateGraphics();
                //das Spielfeld neu setzen
                setzeSpielfeld();
                //das Spielfeld löschen
                zeichenflaeche.Clear(spielfeld.BackColor);
                neuerBall();


und noch die andere die die geänderten Werte zurückliefert

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
andere Form

        //Methode liefert die gewählten Werte zurück
        public Point LiefereWert()
        {
            Point rueckgabe = new Point(00);
            if (radioButton320.Checked == true)
                rueckgabe = new Point(320200);
            if (radioButton640.Checked == true)
                rueckgabe = new Point(640480);
            if (radioButton1024.Checked == true)
                rueckgabe = new Point(1024768);
            if (radioButtonMaximal.Checked == true)
                rueckgabe = new Point(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height);
            return rueckgabe;
        }
Palladin007
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1282
Erhaltene Danke: 182

Windows 11 x64 Pro
C# (Visual Studio Preview)
BeitragVerfasst: 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.