Ввод только цифр в консоли с поддержкой Backspace
Пытаюсь создать метод который позволит писать только цифры с backspace дополнением (для удаления)
public static string LockInput(bool status = true)
{
while (true)
{
ConsoleKeyInfo a = Console.ReadKey(status);
string str = string.Empty;
char number = a.KeyChar;
if (char.IsDigit(number) && number != 8 && number != 46)
{
Console.Write(number);
str += number;
}
if (number == 8)
{
Console.SetCursorPosition(Console.CursorLeft, Console.CursorTop);
if (str.Length > 0) { str = str.Substring(0, str.Length - 1); }
Console.SetCursorPosition(Console.CursorLeft + str.Length, Console.CursorTop);
}
}
}
В консоль могу писать только цифры, но удаление не работает, как исправить?
Ответы (1 шт):
Автор решения: aepot
→ Ссылка
Как-то так это делается.
public static string ReadDigits()
{
StringBuilder sb = new StringBuilder();
ConsoleKey key;
do
{
ConsoleKeyInfo keyInfo = Console.ReadKey(true);
key = keyInfo.Key;
if (key == ConsoleKey.Backspace && sb.Length > 0)
{
Console.Write("\b \b");
sb.Length--;
}
else if (char.IsDigit(keyInfo.KeyChar))
{
Console.Write(keyInfo.KeyChar);
sb.Append(keyInfo.KeyChar);
}
} while (key != ConsoleKey.Enter);
Console.WriteLine();
return sb.ToString();
}