我尝试了以下代码…
string pass = ""; Console.Write("Enter your password: "); ConsoleKeyInfo key; do { key = Console.ReadKey(true); // Backspace Should Not Work if (key.Key != ConsoleKey.Backspace) { pass += key.KeyChar; Console.Write("*"); } else { Console.Write("\b"); } } // Stops Receving Keys Once Enter is Pressed while (key.Key != ConsoleKey.Enter); Console.WriteLine(); Console.WriteLine("The Password You entered is : " + pass);
但是这种方式在输入密码时不能使用退格功能。有什么建议吗?
Console.Write("\b \b");将从屏幕上删除星号字符,但是您的else块中没有任何代码可从pass字符串变量中删除先前输入的字符。
Console.Write("\b \b");
else
pass
以下是应满足您要求的相关工作代码:
string pass = ""; do { ConsoleKeyInfo key = Console.ReadKey(true); // Backspace Should Not Work if (key.Key != ConsoleKey.Backspace && key.Key != ConsoleKey.Enter) { pass += key.KeyChar; Console.Write("*"); } else { if (key.Key == ConsoleKey.Backspace && pass.Length > 0) { pass = pass.Substring(0, (pass.Length - 1)); Console.Write("\b \b"); } else if(key.Key == ConsoleKey.Enter) { break; } } } while (true);