Я разрабатываю консольное приложение, в котором мне нужно обнаружить несколько горячих клавиш, таких как Ctrl + N, Ctrl + O kbd> и Ctrl + S. Вот часть кода, который я использую для распознавания этих горячих клавиш:
ConsoleKeyInfo input = Console.ReadKey(true);
if (input.Modifiers == ConsoleModifiers.Control)
{
if (input.Key == ConsoleKey.N)
{
// ...
}
else if (input.Key == ConsoleKey.O)
{
// ...
}
else if (input.Key == ConsoleKey.S)
{
//...
}
}
Приведенный выше код работает без проблем для Ctrl + N и Ctrl + O. Но я не могу заставить его работать для Ctrl + S. Проведя небольшое тестирование, я обнаружил, что нажатие Ctrl + S даже ничего не делает (это означает, что программа все еще ждет, пока пользователь что-то напечатает).
Эта проблема возникает только при использовании Ctrl + S. Использование простых операторов if
для любого другого модификатора (например, Shift) и ключа (N, O и т. Д.) Работает нормально.
Почему это происходит? Есть ли особое значение в комбинации Ctrl + S? Можно ли заставить это работать? Если да, то как?