Как подавить нажатие клавиш при печати на консоли в .NET? - PullRequest
16 голосов
/ 20 марта 2010

Я портирую небольшую консольную игру C ++ на C #, и кажется, что я не могу остановить печать нажатий клавиш на консоли.

В C ++ я получаю нажатие клавиш этим методом, который также подавляет нажатия клавиш при выводе на консоль:

bool Game::getInput(char *c)
{
    if (_kbhit())
    {
        *c = _getch();
        return true;
    }
    return false;
}

Я пытался сделать эквивалент в C #, выполнив:

Key = Console.ReadKey();

Но это не запрещает печатать символ на консоли, вызывая очевидные проблемы. Любые идеи о том, как это исправить?

Ответы [ 2 ]

33 голосов
/ 20 марта 2010

Вы хотите Console.ReadKey(true)

Получает следующий символ или функциональную клавишу, нажимаемую пользователем. Нажатая клавиша дополнительно отображается в окне консоли.

Аргумент - который называется Перехват :

Определяет, отображать ли нажатую клавишу в окне консоли. true , чтобы не отображать нажатую клавишу; в противном случае неверно .

5 голосов
/ 20 марта 2010

Метод ReadKey имеет перегрузку , которая принимает значение bool в качестве параметра. Передайте true, и он не будет отображать ввод в консоли.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...