System.Console.ReadKey 方法 (Boolean)
方法描述
获取用户按下的下一个字符或功能键。 按下的键可以选择显示在控制台窗口中。
语法定义(C# System.Console.ReadKey 方法 (Boolean) 的用法)
[HostProtectionAttribute(SecurityAction.LinkDemand, UI = true)] public static ConsoleKeyInfo ReadKey( bool intercept )
参数/返回值
参数值/返回值 | 参数类型/返回类型 | 参数描述/返回描述 |
---|---|---|
intercept | System-Boolean | 确定是否在控制台窗口中显示按下的键。如果为 true,则不显示按下的键;否则为 false。 |
返回值 | System.ConsoleKeyInfo | 一个 ConsoleKeyInfo 对象,描述 ConsoleKey 常数和对应于按下的控制台键的 Unicode 字符(如果存在这样的字符)。 ConsoleKeyInfo 对象还以 ConsoleModifiers 值的按位组合描述是否在按下控制台键的同时按下了 Shift、Alt 和 Ctrl 修改键中的一个或多个。 |
提示和注释
ReadKey 方法会一直等待,也就是阻止发出 ReadKey 方法的线程,直到按下某个字符或功能键。 按下字符或功能键的同时可以按下 Alt、Ctrl 或 Shift 修改键中的一个或多个。 但是,仅按下修改键不会使 ReadKey 方法返回。
如果 intercept 参数为 true,按下的键将被截获,不会显示在控制台窗口中;否则显示按下的键。
根据您的应用程序的情况,您可能想要结合 KeyAvailable 属性使用 ReadKey 方法。
ReadKey 方法从键盘进行读取,即使使用 SetIn 方法将标准输入重定向到文件时也是如此。
注意
应用到此类型或成员的 HostProtectionAttribute 特性具有以下 Resources 属性值:UI。HostProtectionAttribute 不影响桌面应用程序(桌面应用程序一般通过双击图标、键入命令或在浏览器中输入 URL 启动)。有关更多信息,请参见 HostProtectionAttribute 类或 SQL Server 编程和宿主保护特性。
System.Console.ReadKey 方法 (Boolean)例子
下面的示例演示采用 Boolean 参数的 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(true); 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("{0} (character '{1}')", cki.Key, cki.KeyChar); } 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: // // You pressed CTL+A (character '☺') // You pressed C (character 'c') // You pressed CTL+C (character '♥') // You pressed K (character 'k') // You pressed ALT+I (character 'i') // You pressed ALT+U (character 'u') // You pressed ALT+SHIFT+H (character 'H') // You pressed Escape (character '←')
异常
异常 | 异常描述 |
---|---|
InvalidOperationException | In 属性是从非控制台的某种流进行重定向的。 |
版本信息
.NET Framework 受以下版本支持:4、3.5、3.0、2.0 .NET Framework Client Profile 受以下版本支持:4、3.5 SP1
适用平台
Windows 7, Windows Vista SP1 或更高版本, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008(不支持服务器核心), Windows Server 2008 R2(支持 SP1 或更高版本的服务器核心), Windows Server 2003 SP2 .NET Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表,请参见.NET Framework 系统要求。