2016-05-20 8 views
4

私のC#コンソールアプリケーションは、私のC#フォームアプリケーションのログインとして使用されています。問題は、私のC#コンソールアプリではわかりません私がF2またはEnterが押されたかどうかを検出する必要があるので、Enterを押す必要なしに、ReadLineへの道を次にEnterを押すことなく、ReadLineを再度押す必要はありません。たとえば、F2が押されたかどうかを検出したいのであれば、F2が押されるまで待つ必要があります。これはReadLineになるまでうまくいけばいいと思いますが、この質問には意味があります。 Cで#かなりnoob ''#。私の問題の
例:c#console:[Enter]を押すことなくReadする方法

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 
    }        
}       




はお時間をいただき、ありがとうございます。

+0

あなたの質問に動作するはずの例であります? –

+0

あなたは 'Enter'を押すことなく行を読む必要があります。これはあなたの質問ですか? –

+0

@usmanlqbalはい、それは私の質問です – C0d1ng

答えて

2

保存ReadKeyからの結果とその後、ちょうど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

すごくありがとう!これはまさに私が探していたものです。素晴らしい一日を! – C0d1ng

1

すでにConsole.ReadKey()が見つかりました。それがスタートです。この関数の周りにステートマシンを構築して、行の最後に完成した文字列を返す必要がありますが、このメソッドはその作業を行うための鍵です。バックスペースや削除などの処理を忘れないでください。

1

すると、この

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

ありがとう、これは素晴らしい作品:) – C0d1ng

+0

@ C0d1ngあなたは歓迎:) –

1

を試してみてください。これは、それが明確ではない

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(); 
    } 
関連する問題