检查控制台应用程序C#中是否按下了任何键

use*_*952 9 c# console-application

我需要检查控制台应用程序中是否按下任何键.键可以是键盘中的任何键.就像是:

if(keypressed)
{ 

//Cleanup the resources used

}
Run Code Online (Sandbox Code Playgroud)

我想出了这个:

ConsoleKeyInfo cki;
cki=Console.ReadKey();

if(cki.Equals(cki))
Console.WriteLine("key pressed");
Run Code Online (Sandbox Code Playgroud)

它适用于除修改键以外的所有键 - 如何检查这些键?

Ion*_*zău 18

这可以帮助您:

Console.WriteLine("Press any key to stop");
do {
    while (! Console.KeyAvailable) {
        // Do something
   }       
} while (Console.ReadKey(true).Key != ConsoleKey.Escape);
Run Code Online (Sandbox Code Playgroud)

如果你想在一个中使用它if,你可以试试这个:

ConsoleKeyInfo cki;
while (true)
{
   cki = Console.ReadKey();
   if (cki.Key == ConsoleKey.Escape)
     break;
}
Run Code Online (Sandbox Code Playgroud)

对于任何键都很简单:删除if.


正如@DawidFerenczy所提到的,我们必须注意到它Console.ReadKey()是阻塞的.它会停止执行并等待直到按下某个键.根据具体情况,这可能(不)方便.

如果您不需要阻止执行,只需测试Console.KeyAvailable.true如果按下了键,它将包含,否则false.


Joh*_*ell 5

看看Console.KeyAvailible你是否想要非阻塞.

do {
    Console.WriteLine("\nPress a key to display; press the 'x' key to quit.");

// Your code could perform some useful task in the following loop. However, 
// for the sake of this example we'll merely pause for a quarter second.

    while (Console.KeyAvailable == false)
        Thread.Sleep(250); // Loop until input is entered.
    cki = Console.ReadKey(true);
    Console.WriteLine("You pressed the '{0}' key.", cki.Key);
    } while(cki.Key != ConsoleKey.X);
}
Run Code Online (Sandbox Code Playgroud)

如果你想阻止那么使用Console.ReadKey.