Как подавить нажатие клавиши на консоль в .NET?
Я переношу небольшую консольную игру на С++ на С#, и кажется, что я не могу остановить нажатие клавиш на консоль.
В С++ я получаю нажатие клавиши с помощью этого метода, который также подавляет нажатия клавиш на консоль:
bool Game::getInput(char *c)
{
if (_kbhit())
{
*c = _getch();
return true;
}
return false;
}
Я попытался сделать эквивалент в С#, выполнив:
Key = Console.ReadKey();
Но это не подавляет символ от печати на консоль, что вызывает очевидные проблемы. Любые идеи о том, как исправить это?
Ответы
Ответ 1
Вы хотите Console.ReadKey(true)
Получает следующий символ или функциональную клавишу, нажатую пользователем. В окне консоли отображается нажатая клавиша.
Аргумент - который называется перехватом:
Определяет, следует ли отображать нажатую клавишу в окне консоли. true, чтобы не отображать нажатую клавишу; в противном случае false.
Ответ 2
Метод ReadKey
имеет перегрузку, которая принимает параметр bool в качестве параметра. Перейдите в true
, и он не отобразит вход в консоли.