Консоль С# - скрыть ввод из окна консоли во время ввода
Я использую Console.ReadLine
для чтения ввода пользователя. Тем не менее, я хочу скрыть/исключить введенный текст на экране консоли во время ввода. Например, когда пользователь пишет "a", он записывает "a" в консоль, а затем у меня будет переменная со значением "a". Однако я не хочу, чтобы на выходе консоли было написано "a".
Как я могу это сделать?
Ответы
Ответ 1
Вот краткая реализация. спасибо @ojblass для идеи
System.Console.Write("password: ");
string password = null;
while (true)
{
var key = System.Console.ReadKey(true);
if (key.Key == ConsoleKey.Enter)
break;
password += key.KeyChar;
}
Ответ 2
Console.ReadKey(true) скрывает ключ пользователя. Я не верю, что Console.Read() предлагает такую возможность. При необходимости вы можете сидеть в циклах чтения ключей по одному, пока не будет нажата клавиша ввода. См. эту ссылку для примера.
Ответ 3
Я создал этот метод из кода в ответе dataCore и предложения m4tt1mus. Я также добавил поддержку клавиши backspace.
private static string GetHiddenConsoleInput()
{
StringBuilder input = new StringBuilder();
while (true)
{
var key = Console.ReadKey(true);
if (key.Key == ConsoleKey.Enter) break;
if (key.Key == ConsoleKey.Backspace && input.Length > 0) input.Remove(input.Length - 1, 1);
else if (key.Key != ConsoleKey.Backspace) input.Append(key.KeyChar);
}
return input.ToString();
}
Ответ 4
Я просто изменил цвет переднего плана на черный, пока вводился пароль. Я новичок, так что это, вероятно, плохая идея, но это сработало для вызова, который я пытался
Console.WriteLine("Welcome to our system. Please create a UserName");
var userName = Console.ReadLine();
Console.WriteLine("Now please create a password");
Console.ForegroundColor = ConsoleColor.Black;
var password = Console.ReadLine();
Console.ForegroundColor = ConsoleColor.White;
Console.WriteLine("Okay, let get you logged in:");