Dann sehe ich tatsächlich nur den Weg, über eine Schleife mit ReadKey() die Tasten bei der Eingabe einzeln abzufragen und dann auf ESC bzw. eben auf Buchstaben/Zahlen zu triggern. Das wäre eine selbstgebaute Version von ReadLine(), die bei ESC die komplette Eingabe abbricht und nicht nur den eingegebenen String zurücksetzt wie es bei ReadLine() selbst der Fall ist.
Allerdings hast du vielleicht schon gemerkt, dass man sich mit Console-Apps etwas schwer tut, weil man in 999 von 1000 Fällen mit C# gleich ne GUI dazu baut, mit Events und allem drum und dran. Es mag also einen anderen Weg geben, aber mir fällt keiner ein.
Da der Lerneffekt gering ist, wenn man Code vorgekaut serviert bekommt und Hilfe bei "Aufgaben" immer ein wenig nach Hausaufgaben stinkt (auch wenn man das verneint), anbei nur andeutungsweise wie sowas aussehen könnte:
Code:
static string myReadLine()
{
string input = "";
ConsoleKeyInfo key;
do
{
// key einlesen
// Wenn key = Escape, input leeren
// sonst input um KeyChar ergänzen
} while (key nix Escape und nix Enter);
return input;
}
Wenn du das nun anstelle von ReadLine() aufrufst, sollte im Falle einer gültigen Eingabe der eingegebene String zurückkommen und wenn währenddessen Escape gedrückt wurde null. Auf letzteres triggerst du das PKW-Menü, das die Schleife abbricht sobald bei einer Eingabe null gefunden wurde, was eben auf das Escape hindeutet.
Vielleicht denke ich aber auch zu kompliziert. Das ist eben das Ding, wenn man das
eigentlich über ein Event lösen würde, es aber mangels Unterstützung nicht kann :-/