如何在.NET中抑制打印到控制台的按键?

Cbs*_*sch 16 .net c# console

我正在将一个小型C++控制台游戏移植到C#,似乎我无法阻止按键被打印到控制台.

在C++中,我使用此方法获得击键,这也可以抑制击键被打印到控制台:

bool Game::getInput(char *c)
{
    if (_kbhit())
    {
        *c = _getch();
        return true;
    }
    return false;
}
Run Code Online (Sandbox Code Playgroud)

我尝试通过以下方式在C#中执行等效操作:

Key = Console.ReadKey();
Run Code Online (Sandbox Code Playgroud)

但这并不能抑制字符被打印到控制台,从而导致明显的问题.关于如何解决这个问题的任何想法?

Chr*_*isF 34

你要 Console.ReadKey(true)

获得用户按下的下一个字符或功能键.按下的键可选地显示在控制台窗口中.

参数 - 被称为拦截:

确定是否在控制台窗口中显示按下的键.如果不显示按下的键,则为true ; 否则,错误.


adr*_*nks 5

ReadKey方法具有以bool作为参数的重载.传入,true它不会在控制台中显示输入.