2017-09-26 63 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你想要的输入通过控制器逻辑,其中包括控制台强加于输入自己的行为,例如删除字符按退格键时所获得。

两种不同的获取输入的方法,两种不同的结果。