2017-09-26 64 views
0

我有這個簡單的代碼:Backspace鍵刪除不使用Console.ReadKey時()

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

當用戶按下退格,光標只是向後移動,但不會刪除最後一個字符。

我讀了一些人只是檢查,如果輸入的是退格,並呼籲Console.Write(" \b")抹去,但我不知道這是否是最佳解決辦法。

如果我使用Console.Read()Console.ReadLine()讀取輸入,當按下退格時,字符被刪除。

爲什麼退格鍵鍵在使用ReadKey()時會改變其行爲?

+0

同樣的事情發生在按下「Enter」鍵時 - 光標位置變爲「0」,但不移動到下一行。 –

+0

是的,但是爲什麼?有什麼辦法可以解決這個問題? – thur

+0

但是,爲什麼這只是當我使用ReadKey()? @PeterDuniho如果我不使用它,它會刪除 – thur

回答

1

當您使用ReadKey()時,您告訴.NET您需要原始輸入並且不要對其進行任何處理。你甚至可以告訴.NET不要回顯屏幕的關鍵字(通過方法的參數)。

如果使用Read()ReadLine(),你是不是告訴.NET你想要的輸入通過控制器邏輯,其中包括控制檯強加於輸入自己的行爲,例如刪除字符按退格鍵時所獲得。

兩種不同的獲取輸入的方法,兩種不同的結果。