Как работать с функциональными клавишами
Console.WriteLine("Введите что угодно кроме функциональных клавиш");
if (Console.ReadLine() == "") break;
Console.WriteLine("Наш великолепный код пришел к своему не менее великолепному концу, начинаем заново");
вот тут я использую любую клавишу там буквы, цифры, и цикл начинает запускаться заново, но при нажатии функциональной клавиши оно сразу же закрывается, а мне надо чтобы при нажатии Escape програ спрашивала у меня закрыватть ли прогу или начинать цикл заново ?
Ответы (1 шт):
Автор решения: aepot
→ Ссылка
Чтобы получилось, придется работать с консолью на более низком уровне перехватывая все нажатое.
private static void Main(string[] args)
{
while (true)
{
ConsoleKeyInfo keyInfo = Console.ReadKey(true);
if (keyInfo.Key == ConsoleKey.Escape)
{
Console.WriteLine();
Console.Write("Выходим? (y/n): ");
bool isExit = Console.ReadKey().KeyChar == 'y';
Console.WriteLine();
if (isExit)
break;
else
Console.WriteLine("Ну нет, так нет.");
}
switch (keyInfo.Key)
{
case ConsoleKey.Enter:
Console.WriteLine();
break;
case ConsoleKey.Backspace:
Console.Write("\b \b");
break;
default:
Console.Write(keyInfo.KeyChar);
break;
}
}
Console.WriteLine("Пока.");
Console.ReadKey();
}
привет мир
Выходим? (y/n): ы
Ну нет, так нет.
еще раз привет
Выходим? (y/n): y
Пока.
Можно даже вот так проверять
bool isExit = Console.ReadKey().Key == ConsoleKey.Y;
Тогда даже когда русский включен, будет срабатывать.