ReadKey 方法会一直等待,也就是阻止发出 ReadKey 方法的线程,直到按下某个字符或功能键。按下字符或功能键的同时可以按下 Alt、Ctrl 或 Shift 修改键中的一个或多个。但是,仅按下修改键不会使 ReadKey 方法返回。
根据您的应用程序的情况,您可能想要结合 KeyAvailable 属性使用 ReadKey 方法。
ReadKey 方法从键盘进行读取,即使使用 SetIn 方法将标准输入重定向到文件时也是如此。
下面的示例演示无参数的 ReadKey 方法。
using System;
class Example
{
public static void Main()
{
ConsoleKeyInfo cki;
// Prevent example from ending if CTL+C is pressed.
Console.TreatControlCAsInput = true;
Console.WriteLine("Press any combination of CTL, ALT, and SHIFT, and a console key.");
Console.WriteLine("Press the Escape (Esc) key to quit: \n");
do
{
cki = Console.ReadKey();
Console.Write(" --- You pressed ");
if((cki.Modifiers & ConsoleModifiers.Alt) != 0) Console.Write("ALT+");
if((cki.Modifiers & ConsoleModifiers.Shift) != 0) Console.Write("SHIFT+");
if((cki.Modifiers & ConsoleModifiers.Control) != 0) Console.Write("CTL+");
Console.WriteLine(cki.Key.ToString());
} while (cki.Key != ConsoleKey.Escape);
}
}
// This example displays output similar to the following:
// Press any combination of CTL, ALT, and SHIFT, and a console key.
// Press the Escape (Esc) key to quit:
//
// a --- You pressed A
// k --- You pressed ALT+K
// ► --- You pressed CTL+P
// --- You pressed RightArrow
// R --- You pressed SHIFT+R
// --- You pressed CTL+I
// j --- You pressed ALT+J
// O --- You pressed SHIFT+O
// § --- You pressed CTL+U
|