2017-09-26 9 views
0

私はこの単純なコードがあります。Console.ReadKeyを使用する際にBackspaceキーが消去ではない()

static void Main(string[] args) 
    { 
     while (!System.Console.KeyAvailable) 
     { 
      var key = System.Console.ReadKey(false); 
     } 
    } 

ユーザーがBackspaceキーを押すと、カーソルが戻ったばかりの移動が、最後の文字を消去しませんが。

入力がのバックスペースであるかどうかを確認して、Console.Write(" \b")を呼び出してコールしますが、これが解決する最善の方法であるかどうかはわかりません。

私はConsole.Read()またはConsole.ReadLine()を使用して入力を読めばBackspaceキーが押されたときに、文字が消去されます。

なぜバックスペースキーがReadKey()を使用するとその動作が変わるのですか?

+0

「Enter」を押すと、同じことが起こります。カーソル位置は「0」に変わりますが、次の行には移動しません。 –

+0

ええ、なぜですか?これを解決する方法はありますか? – thur

+0

しかし、これはなぜ私がReadKey()を使うときに起こるのですか? @PeterDunihoもし私がそれを使用しないと、それは消去されます – thur

答えて

1

ReadKey()を使用すると、.NETに生の入力が必要であり、処理が行われないことがわかります。 .NETに、メソッドへのパラメータを介してキーを画面にエコーしないように指示することさえできます。

Read()またはReadLine()を使用すると、代わりにコンソールロジックで取得された入力を.NETに伝えます。コンソールには、バックスペースキーが押されたときに文字を消去するなどの独自の動作を入力に含めます。 。

入力を取得するための2つの異なるメソッド、2つの異なる結果。

関連する問題