Ler em inglês

Partilhar via


Console.ReadKey Método

Definição

Obtém o próximo caractere ou tecla de função pressionada pelo usuário.

Sobrecargas

ReadKey()

Obtém o próximo caractere ou tecla de função pressionada pelo usuário. A tecla pressionada é exibida na janela do console.

ReadKey(Boolean)

Obtém o próximo caractere ou tecla de função pressionada pelo usuário. A tecla pressionada é exibida opcionalmente na janela do console.

ReadKey()

Origem:
Console.cs
Origem:
Console.cs
Origem:
Console.cs

Obtém o próximo caractere ou tecla de função pressionada pelo usuário. A tecla pressionada é exibida na janela do console.

[System.Runtime.Versioning.UnsupportedOSPlatform("browser")]
public static ConsoleKeyInfo ReadKey ();
[System.Runtime.Versioning.UnsupportedOSPlatform("browser")]
[System.Runtime.Versioning.UnsupportedOSPlatform("android")]
[System.Runtime.Versioning.UnsupportedOSPlatform("ios")]
[System.Runtime.Versioning.UnsupportedOSPlatform("tvos")]
public static ConsoleKeyInfo ReadKey ();
public static ConsoleKeyInfo ReadKey ();

Retornos

Um objeto que descreve a constante ConsoleKey e o caractere Unicode, se houver, que correspondem à chave do console pressionada. O objeto ConsoleKeyInfo também descreve, em uma combinação bit a bit de valores ConsoleModifiers, se uma ou mais teclas modificadoras Ctrl, Alt ou Shift foram pressionadas simultaneamente com a chave do console.

Atributos

Exceções

A propriedade In é redirecionada de algum fluxo que não é o console.

Exemplos

Um dos usos mais comuns do ReadKey() método é interromper a execução do programa até que o usuário pressione uma tecla e o aplicativo termine ou exiba uma janela adicional de informações. O exemplo a seguir usa o ReadKey() método para aguardar o usuário pressionar a tecla Enter antes de encerrar o aplicativo.

using System;

public class Example
{
   public static void Main()
   {
      DateTime dat = DateTime.Now;
      Console.WriteLine("The time: {0:d} at {0:t}", dat);
      TimeZoneInfo tz = TimeZoneInfo.Local;
      Console.WriteLine("The time zone: {0}\n",
                        tz.IsDaylightSavingTime(dat) ?
                           tz.DaylightName : tz.StandardName);
      Console.Write("Press <Enter> to exit... ");
      while (Console.ReadKey().Key != ConsoleKey.Enter) {}
   }
}
// The example displays output like the following:
//     The time: 11/11/2015 at 4:02 PM:
//     The time zone: Pacific Standard Time

Observe que essa sobrecarga do ReadKey método, por padrão, ecoa todas as teclas exibicionáveis que o usuário pressiona no console. Para suprimi-los, chame o ReadKey método com um intercept argumento de true.

O exemplo a seguir usa o ReadKey() método para exibir informações sobre qual tecla o usuário pressionou.

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

Comentários

O ReadKey método aguarda, ou seja, bloqueia o thread que emite o ReadKey método até que um caractere ou uma tecla de função seja pressionado. Uma tecla de função ou caractere pode ser pressionada em combinação com uma ou mais teclas modificadoras Alt, Ctrl ou Shift. No entanto, pressionar uma tecla modificadora por si só não fará com que o ReadKey método retorne.

Dependendo do aplicativo, talvez você queira usar o ReadKey método em conjunto com a KeyAvailable propriedade .

O ReadKey método lê do teclado mesmo que a entrada padrão seja redirecionada para um arquivo com o SetIn método .

Confira também

Aplica-se a

.NET 9 e outras versões
Produto Versões
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.3, 1.4, 1.6, 2.0, 2.1

ReadKey(Boolean)

Origem:
Console.cs
Origem:
Console.cs
Origem:
Console.cs

Obtém o próximo caractere ou tecla de função pressionada pelo usuário. A tecla pressionada é exibida opcionalmente na janela do console.

[System.Runtime.Versioning.UnsupportedOSPlatform("browser")]
public static ConsoleKeyInfo ReadKey (bool intercept);
[System.Runtime.Versioning.UnsupportedOSPlatform("browser")]
[System.Runtime.Versioning.UnsupportedOSPlatform("android")]
[System.Runtime.Versioning.UnsupportedOSPlatform("ios")]
[System.Runtime.Versioning.UnsupportedOSPlatform("tvos")]
public static ConsoleKeyInfo ReadKey (bool intercept);
public static ConsoleKeyInfo ReadKey (bool intercept);

Parâmetros

intercept
Boolean

Determina se a tecla pressionada deve ser exibida na janela do console. true para não exibir a tecla pressionada; caso contrário, false.

Retornos

Um objeto que descreve a constante ConsoleKey e o caractere Unicode, se houver, que correspondem à chave do console pressionada. O objeto ConsoleKeyInfo também descreve, em uma combinação bit a bit de valores ConsoleModifiers, se uma ou mais teclas modificadoras Ctrl, Alt ou Shift foram pressionadas simultaneamente com a chave do console.

Atributos

Exceções

A propriedade In é redirecionada de algum fluxo que não é o console.

Exemplos

Um dos usos mais comuns do ReadKey método é interromper a execução do programa até que o usuário pressione uma tecla e o aplicativo termine ou exiba uma janela adicional de informações. O exemplo a seguir usa o ReadKey(Boolean) método para aguardar o usuário pressionar a tecla Enter antes de encerrar o aplicativo. Observe que, se o usuário pressionar qualquer outra tecla, ela não será ecoada no console.

using System;

public class Example
{
   public static void Main()
   {
      DateTime dat = DateTime.Now;
      Console.WriteLine("The time: {0:d} at {0:t}", dat);
      TimeZoneInfo tz = TimeZoneInfo.Local;
      Console.WriteLine("The time zone: {0}\n",
                        tz.IsDaylightSavingTime(dat) ?
                           tz.DaylightName : tz.StandardName);
      Console.Write("Press <Enter> to exit... ");
      while (Console.ReadKey(true).Key != ConsoleKey.Enter) {}
   }
}
// The example displays output like the following:
//     The time: 11/11/2015 at 4:02 PM:
//     The time zone: Pacific Standard Time

O exemplo a seguir usa o ReadKey(Boolean) método para exibir informações sobre a tecla pressionada por um usuário sem ecoar essa tecla no console.

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 '←')

Comentários

O ReadKey método aguarda, ou seja, bloqueia o thread que emite o ReadKey método até que um caractere ou uma tecla de função seja pressionado. Uma tecla de função ou caractere pode ser pressionada em combinação com uma ou mais teclas modificadoras Alt, Ctrl ou Shift. No entanto, pressionar uma tecla modificadora por si só não fará com que o ReadKey método retorne.

Se o intercept parâmetro for true, a tecla pressionada será interceptada e não será exibida na janela do console; caso contrário, a tecla pressionada será exibida.

Dependendo do aplicativo, talvez você queira usar o ReadKey método em conjunto com a KeyAvailable propriedade .

O ReadKey método lê do teclado mesmo que a entrada padrão seja redirecionada para um arquivo com o SetIn método .

Confira também

Aplica-se a

.NET 9 e outras versões
Produto Versões
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.3, 1.4, 1.6, 2.0, 2.1