13

コンソールアプリケーションでキーが押されているかどうかを確認する必要があります。キーは、キーボードの任意のキーにすることができます。何かのようなもの:

if(keypressed)
{ 

//Cleanup the resources used

}

私はこれを思いついた:

ConsoleKeyInfo cki;
cki=Console.ReadKey();

if(cki.Equals(cki))
Console.WriteLine("key pressed");

修飾キーを除くすべてのキーでうまく機能します-これらのキーを確認するにはどうすればよいですか?

4

2 に答える 2

24

これはあなたを助けることができます:

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

で使用したい場合はif、これを試すことができます:

ConsoleKeyInfo cki;
while (true)
{
   cki = Console.ReadKey();
   if (cki.Key == ConsoleKey.Escape)
     break;
}

どのキーについても非常に簡単です: if.


@DawidFerenczyが述べConsole.ReadKey()たように、それがブロックしていることに注意する必要があります。実行を停止し、キーが押されるまで待機します。コンテキストによっては、これは便利な場合があります (そうでない場合もあります)。

実行をブロックする必要がない場合は、単にテストしてConsole.KeyAvailableください。trueキーが押された場合は含まれ、そうでない場合はfalse.

于 2012-07-25T10:18:33.503 に答える
8

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);
}

ブロックしたい場合は、 を使用しますConsole.ReadKey

于 2012-07-25T10:15:19.453 に答える