2016-05-20 5 views
4

Meine C# -Konsolenanwendung wird als Login für meine C# -Form-Anwendung verwendet, das Problem ist, in meiner C# -Konsolen-App konnte ich nicht herausfinden ein Weg zu ReadLine ohne die Notwendigkeit, Enter zu drücken, weil ich erkennen muss, ob F2 oder Enter gedrückt wird, dann ReadLine ohne Benutzer erneut auf Enter drücken müssen. Zum Beispiel, wenn ich erkennen wollte, ob F2 gedrückt wird, würde ich warten müssen, bis F2 gedrückt wird, bis ich in der Lage bin zu ReadLine, Hoffentlich wurde diese Frage so formuliert, dass es Sinn macht, ich bin sicher, dass Sie mir sagen können bin ziemlich ein 'noob' bei C#.
Beispiel für mein Problem:C# console: Wie ReadLine ohne die Notwendigkeit, [Enter] drücken

static void Main() 
{ 
    var KP = Console.ReadKey(); 
    if (KP.Key == ConsoleKey.F2) 
    {          
     //User Presses F2     
    }  
    else if (KP.Key == ConsoleKey.Enter) 
    { 
     string UserName = ReadLineWithoutPressingEnter();//Just a example 
     //ReadLine without needing to press enter again 
    }        
}       




Vielen Dank für Ihre Zeit.

+0

Ihre Frage arbeiten sollte es nicht klar, ? –

+0

Sie müssen eine Zeile lesen, ohne 'Enter' zu drücken ... ist das Ihre Frage? –

+0

@usmanlqbal Ja, das ist meine Frage – C0d1ng

Antwort

2

das Ergebnis aus ReadKey speichern und dann einfach eine Readline:

public static void Main(string[] args) 
    { 
     var KP = Console.ReadKey(); 
     if (KP.Key == ConsoleKey.F2) 
     { 
      return;    
     } 

     string UserName = KP.KeyChar + Console.ReadLine(); 

     Console.WriteLine(UserName); 
     Console.ReadLine(); 
    } 
+0

Danke soo viel! Dies ist genau das, wonach ich gesucht habe, einen schönen Tag! – C0d1ng

1

Sie haben bereits Console.ReadKey() gefunden. Das ist ein Anfang. Sie müssen auch eine Zustandsmaschine um diese Funktion herum erstellen, um eine vollständige Zeichenfolge am Ende der Zeile zurückzugeben, aber diese Methode ist der Schlüssel dafür, dass dies funktioniert. Vergessen Sie nicht, Dinge wie Rücktaste und Löschen zu behandeln.

1

Hier ist ein Beispiel Versuchen Sie, diese

static void Main(string[] args) 
    { 
     ConsoleKeyInfo cki = new ConsoleKeyInfo(); 
     int i = 0; 
     do 
     { 


      while (Console.KeyAvailable == false) 
       Thread.Sleep(250); // Loop until input is entered. 
      cki = Console.ReadKey(true); 

      if (cki.Key == ConsoleKey.F1) 
      { 
       Console.WriteLine("User Have Press F1"); 
       //do some thing 
      } 

      if (cki.Key == ConsoleKey.Enter) 
      { 
       Console.WriteLine("User Have Press Enter"); 
       //do some thing 
      } 
      if (cki.Key == ConsoleKey.A) 
      { 
       Console.WriteLine("User Have Press A"); 
       //do some thing 
      } 

     } while (cki.Key != ConsoleKey.X); 
    } 
+0

Danke das funktioniert super :) – C0d1ng

+0

@ C0d1ng du bist willkommen :) –

1

Diese

static void Main(string[] args) 
    { 
     ConsoleKeyInfo e; 
     string userName = ""; 

     while (true) 
     { 
      e = Console.ReadKey(); 

      if (e.Key == ConsoleKey.Enter) 
      { 
       break; 
      } 
      else if (e.Key == ConsoleKey.F2) 
      { 
       //things to do when F2 
      } 

      userName += e.KeyChar; 
     } 

     Console.WriteLine("username: " + userName); 
     Console.Read(); 
    }