C# 使用Console.ReadKey()时不擦除退格
我有一个简单的代码:C# 使用Console.ReadKey()时不擦除退格,c#,console-application,C#,Console Application,我有一个简单的代码: static void Main(string[] args) { while (!System.Console.KeyAvailable) { var key = System.Console.ReadKey(false); } } 当用户按Backspace时,光标只是向后移动,但不会删除最后一个字符 我读到一些人只是检查输入是否为Backspace并调用控制台。写入(“\
static void Main(string[] args)
{
while (!System.Console.KeyAvailable)
{
var key = System.Console.ReadKey(false);
}
}
当用户按Backspace时,光标只是向后移动,但不会删除最后一个字符
我读到一些人只是检查输入是否为Backspace并调用控制台。写入(“\b”)以擦除,但我不知道这是否是解决问题的最佳方法
如果我使用Console.read()
或Console.ReadLine()
读取输入,则按Backspace时字符将被删除
当使用ReadKey()
时,为什么退格键会改变其行为?当您使用ReadKey()
时,您告诉.NET您想要原始输入,并且它不会对其进行任何处理。您甚至可以告诉.NET不要将键回显到屏幕上(通过方法的参数)
如果您使用Read()
或ReadLine()
,则您会告诉.NET您想要通过控制台逻辑获得的输入,其中包括控制台对输入施加自己的行为,例如按下退格键时擦除字符
两种不同的获取输入的方法,两种不同的结果。当您按下
Enter
时会发生相同的情况-光标位置会更改为0
,但不会移动到下一行。是的,但为什么?有办法解决这个问题吗?但为什么在我使用ReadKey()时会出现这种情况呢@如果我不使用它,它就会erases@PeterDuniho我把问题改成了有意义的…@PeterDuniho-thks,这就是我想要理解的。。。你能回答这个问题吗?