在特定任务完成之前,在C#Console中禁用输入

时间:2011-02-28 20:40:14

标签: c# console-application

我正在处理程序的一小部分,处理输入,基本上我有这个小代码:

bool Done = false;
while (!Done)
{
  ConsoleKeyInfo key = Console.ReadKey(true);
  if (key.Key == ConsoleKey.Enter)
  {
    //Action
  }
}

这个问题的主要问题是代码甚至会在操作之间处理ReadKey。

因此,如果你有一个菜单,你可以按键然后它会说“你按下:x”如果你按下任何按钮,同时它会显示这条消息,ReadKey已经获得了这个新密钥。

所以我想阻止任何进一步的输入,直到用户再次看到菜单。

2 个答案:

答案 0 :(得分:5)

不太确定这是否有意义,个人我喜欢它,当击键没有消失,我可以提前输入。但是你可以像这样刷新键盘缓冲区:

while (!Done)
{
    while (Console.KeyAvailable) Console.ReadKey(true);
    ConsoleKeyInfo key = Console.ReadKey(true);
    // etc..
}

答案 1 :(得分:0)

你不能阻止输入, 即使你不处理它,它也会进入键盘缓冲区。

你可以简单地停止将它们从缓冲区中取出。