C #: Warum muss der Benutzer die Eingabetaste drücken, bevor Console.Readline () beginnt zu lesen?

8

Mein Programm kann mit der GUI oder über die Befehlszeile ausgeführt werden. Wenn es über die Befehlszeile ausgeführt wird, frage ich nach dem Start des Programms nach weiteren Befehlen (mit Console.Readline ()). Es wird jedoch keine Eingaben des Benutzers akzeptieren, bis sie die Eingabetaste drücken (BEVOR sie ihre Eingabe eingeben).

Ich starte das Projekt als ein Konsolenprojekt wie folgt:

%Vor%

Gibt Folgendes aus, wenn der Benutzer "/ Exit" (zum Beispiel) eingibt:

  

Geben Sie zusätzliche Befehle ein: / Beenden

     

'/ Exit' wird nicht als interner oder externer Befehl erkannt   Programm oder Batch-Datei.

Wenn der Benutzer jedoch zuerst die Eingabetaste drückt (direkt nach "Zusätzliche Befehle eingeben:"), kann er Befehle für die Programmkorrektur eingeben.

Irgendeine Idee warum sie zuerst Enter drücken müssen? Es ist nicht intuitiv für den Benutzer, es zu drücken, bevor sie tippen, also möchte ich es ändern.

Danke!

    
Tara 25.03.2011, 22:10
quelle

2 Antworten

14

Das Problem ist, dass Sie an die Konsole des Befehlszeilenprozessors cmd.exe angehängt haben. Jetzt gibt es zwei Programme, die an der Eingabe interessiert sind. Cmd.exe gewinnt, es weiß nicht, was der / Exit-Befehl bedeuten soll. Und zeigt die Fehlermeldung an, die Sie gesehen haben. Kein Problem, wenn Sie zuerst die Eingabetaste drücken, cmd.exe stört das nicht. Und dein Programm bekommt eine Wendung.

Erstellen Sie Ihre eigene Konsole, rufen Sie immer AllocConsole ().

    
Hans Passant 25.03.2011, 22:14
quelle
0

Weil [Enter] das Ende der Zeile bedeutet!

Wenn Ihnen das nicht gefällt, verwenden Sie stattdessen Console.ReadKey() oder Console.Read() .

    
Josh M. 25.03.2011 22:13
quelle

Tags und Links