Benutzer mit den meisten Antworten
Konsolenanwendung neu ausführen und Fenster leeren

Frage
-
Hallo zusammen!
Ich habe eine Konsolenanwendung und möchte nachdem die Anwendung abgelaufen ist, mit einer Tastatureingabe entscheiden, ob die Anwendung geschlossen wird, oder das Fenster geleert und die Anwendung neu begonnen wird.
Meine erste Frage dazu ist, wie ich das Fenster leeren kann. Wie kann ich dann das mit der Abfrage lösen, kann ich das in einen if else Block schreiben, oder gibt es dafür eine elegantere Lösung?
Vielen Dank für die Hilfe.
Antworten
-
Bildschirminhalt leeren geht via: System.Console.Clear();
Das neustarten von Konsolenanwendungen kann ich dir nicht sagen. Bei Windows Forms Anwendungen gibt es dazu einen Befehl (System.Windows.Forms.Application.Restart(); )- aber der klappt glaube ich nicht bei Konsolenanwendungen.
Wenn du den Pfad zu deiner Anwendung kennst, dann kannst du die Anwendung doch über einen System.Diagnostics.Process starten - die alte Anwendung Beenden und schon hast du den neustart erreicht. -
Eine relativ simple Lösung währe in der Main folgendes einzubauen:
String weiter;
do
{
... // Hier kommt der eigendliche Code
System.Console.WriteLine("\nNeu starten? (j/n)");
weiter = System.Console.ReadLine();
} while (weiter.Contains('J') || weiter.Contains('j'));
Edit: Das bezieht sich übrigens auf den Eintrag direkt über diesem.
Alle Antworten
-
Bildschirminhalt leeren geht via: System.Console.Clear();
Das neustarten von Konsolenanwendungen kann ich dir nicht sagen. Bei Windows Forms Anwendungen gibt es dazu einen Befehl (System.Windows.Forms.Application.Restart(); )- aber der klappt glaube ich nicht bei Konsolenanwendungen.
Wenn du den Pfad zu deiner Anwendung kennst, dann kannst du die Anwendung doch über einen System.Diagnostics.Process starten - die alte Anwendung Beenden und schon hast du den neustart erreicht. -
Ah ja, das mit Console.Clear funktioniert schon mal. Eigentlich will ich die Anwendung nicht neustarten, sondern den Benutzer fragen ob er beenden oder neu beginnen möchte, beim beenden soll die Konsole geschlossen werden, beim neubeginn soll die prozedur einfach von vorne anfangen.
Ich krieg das zwar mit case1: und goto case1; in eine if else schleife hin, finde das aber nicht sehr elegant.
Hab zwar erst mit dem Programmieren angefangen vor 2 Wochen und das Programm ist ein einfacher Rechner, eine Beispiel Übung aus dem Buch, ich will aber auf eigene Faust diese Beispielanwendung schon "perfektionieren".
Hab schon ausnahmebehandlungen eingebaut und Funktionen, die nach einer Ausnahme in der Eingabe (z.B. Buchstabe statt Zahl), die Zahl erneut abfragen statt zu beenden. Das hab ich mit case: und goto case; gelöst (was glaub ich auch nicht so elegant ist)...
Wäre dankbar für weiter Hilfen und denkanstöße. Vielen Dank!
-
Ja das mit der Console.Clear(); Anweisung ist perfekt, das stimmt. Ich wollte ja wissen ob es eine elegante, professionelle Moöglichkeit gibt den Benutzer zu fragen ob er neu beginnen oder beenden möchte. ich hab das mit einer if - else if Anweisung und goto case1; gelöst, dachte bloß das das nicht unbedingt ein guter Programierstil ist.
Mit den Hilfen von euch hier hab ich jedenfalls das Programm so zum funktionieren gebracht, wie ich es wollte. Danke schon mal an alle....
-
Eine relativ simple Lösung währe in der Main folgendes einzubauen:
String weiter;
do
{
... // Hier kommt der eigendliche Code
System.Console.WriteLine("\nNeu starten? (j/n)");
weiter = System.Console.ReadLine();
} while (weiter.Contains('J') || weiter.Contains('j'));
Edit: Das bezieht sich übrigens auf den Eintrag direkt über diesem.