Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Programm neu starten [eigentlich: neuen Durchlauf beginnen]
Hobby Programmierer
myCSharp.de - Member



Dabei seit:
Beiträge: 18
Herkunft: BW

Themenstarter:

Programm neu starten [eigentlich: neuen Durchlauf beginnen]

beantworten | zitieren | melden

Hi,

ich habe ein Programm, an dem ich an einer bestimmten Stelle einen Neustart ausführen möchte. Mit folgendem Code versuche ich dies:


DialogResult dr = MessageBox.Show("Das Spiel ging unentschieden aus. Möchten Sie erneut spielen?", "Unentschieden", MessageBoxButtons.YesNo);
            if (dr == DialogResult.Yes)
                Application.Restart();
            else
                Application.Exit();

Egal, ob ich in der MessageBox auf Ja oder Nein klicke, wird die Form gleich 8 mal neu geöffnet und die "alte" Form wird geschlossen.

An was liegt es? An anderen Stellen im Programm mache ich mit dem gleichen Code einen Neustart und es funktioniert wie es soll.

Vielen Dank im Voraus
private Nachricht | Beiträge des Benutzers
_Bugrick_
myCSharp.de - Member



Dabei seit:
Beiträge: 51

beantworten | zitieren | melden

Hallo,

da ist nichts zu erkennen, weshalb das Programm 8 mal neustartet. Hast du das vielleicht in einer Schleife drin und versehentliche eine Klammer falsch gesetzt? Kannst du mal mehr Code posten?

Gruß
_Bugrick_
private Nachricht | Beiträge des Benutzers
herbivore
myCSharp.de - Experte

Avatar #avatar-2627.gif


Dabei seit:
Beiträge: 52329
Herkunft: Berlin

beantworten | zitieren | melden

Hallo Hobby Programmierer,

auch als Hobbyprogrammierer solltest du versuchen, sauberen Code zu schreiben. Für ein weiteres Spiel solltest du auf keinen Fall das ganze Programm (den Prozess) neustarten. Application.Restart ist für andere Zwecke gedacht. Setze einfach alle relevanten Variablen des Spiels auf die Startwerte zurück. Da du am Beginn des Spiels die Variablen sowieso auf die richtigen Startwerte setzen musst, pack das in eine Methode. Diese kannst du dann beim Programmstart, also auch im Yes-Teil deiner Abfrage aufrufen.

Wenn du wirklich das bestehende Form schließen und ein neues Form öffnen willst, reicht eben genau das (Close + new Form/Show). Du musst nur aufpassen, dass das Schließen des Forms nicht zum Beenden der Anwendung führt. Siehe dazu Schließen eines Forms, ohne die komplette Anwendung zu schließen [war: Form- und Codehandling].

Bitte beachte [Hinweis] Wie poste ich richtig? Punkt 1.1.1.

herbivore
private Nachricht | Beiträge des Benutzers