Partilhar via


Console.KeyAvailable Propriedade

Definição

Obtém um valor que indica se um pressionamento de tecla está disponível no fluxo de entrada.

public:
 static property bool KeyAvailable { bool get(); };
public static bool KeyAvailable { get; }
member this.KeyAvailable : bool
Public Shared ReadOnly Property KeyAvailable As Boolean

Valor da propriedade

Boolean

true se um pressionamento de tecla estiver disponível; caso contrário, false.

Exceções

Ocorreu um erro de E/S.

A entrada padrão é redirecionada para um arquivo em vez do teclado.

Exemplos

O exemplo a seguir demonstra como usar a KeyAvailable propriedade para criar um loop que é executado até que uma tecla seja pressionada.

using namespace System;
using namespace System::Threading;
int main()
{
   ConsoleKeyInfo cki;
   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 );
      cki = Console::ReadKey( true );
      Console::WriteLine( "You pressed the '{0}' key.", cki.Key );
   }
   while ( cki.Key != ConsoleKey::X );
}

/*
This example produces results similar to the following:

Press a key to display; press the 'x' key to quit.
You pressed the 'H' key.

Press a key to display; press the 'x' key to quit.
You pressed the 'E' key.

Press a key to display; press the 'x' key to quit.
You pressed the 'PageUp' key.

Press a key to display; press the 'x' key to quit.
You pressed the 'DownArrow' key.

Press a key to display; press the 'x' key to quit.
You pressed the 'X' key.
*/
using System;
using System.Threading;

class Sample
{
    public static void Main()
    {
       ConsoleKeyInfo cki;

       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);
    }
}
/*
This example produces results similar to the following:

Press a key to display; press the 'x' key to quit.
You pressed the 'H' key.

Press a key to display; press the 'x' key to quit.
You pressed the 'E' key.

Press a key to display; press the 'x' key to quit.
You pressed the 'PageUp' key.

Press a key to display; press the 'x' key to quit.
You pressed the 'DownArrow' key.

Press a key to display; press the 'x' key to quit.
You pressed the 'X' key.
*/
open System
open System.Threading

let mutable cki = Unchecked.defaultof<ConsoleKeyInfo>

while cki.Key <> ConsoleKey.X do
    printfn "\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 not Console.KeyAvailable do
        Thread.Sleep 250 // Loop until input is entered.

    cki <- Console.ReadKey true
    printfn $"You pressed the '{cki.Key}' key."


// This example produces results similar to the following:
//
// Press a key to display; press the 'x' key to quit.
// You pressed the 'H' key.
//
// Press a key to display; press the 'x' key to quit.
// You pressed the 'E' key.
//
// Press a key to display; press the 'x' key to quit.
// You pressed the 'PageUp' key.
//
// Press a key to display; press the 'x' key to quit.
// You pressed the 'DownArrow' key.
//
// Press a key to display; press the 'x' key to quit.
// You pressed the 'X' key.
Imports System.Threading

Class Sample
   Public Shared Sub Main()
      Dim cki As ConsoleKeyInfo
      
      Do
         Console.WriteLine(vbCrLf & "Press 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.
         End While
         cki = Console.ReadKey(True)
         Console.WriteLine("You pressed the '{0}' key.", cki.Key)
      Loop While cki.Key <> ConsoleKey.X
   End Sub 
End Class 
'This example produces results similar to the following:
'
'Press a key to display; press the 'x' key to quit.
'You pressed the 'H' key.
'
'Press a key to display; press the 'x' key to quit.
'You pressed the 'E' key.
'
'Press a key to display; press the 'x' key to quit.
'You pressed the 'PageUp' key.
'
'Press a key to display; press the 'x' key to quit.
'You pressed the 'DownArrow' key.
'
'Press a key to display; press the 'x' key to quit.
'You pressed the 'X' key.
'

Comentários

O valor da propriedade é retornado imediatamente; ou seja, a KeyAvailable propriedade não bloqueia a entrada até que um pressionamento de tecla esteja disponível.

Use a KeyAvailable propriedade em conjunto com apenas o ReadKey método, não os Read ReadLine métodos ou.

Aplica-se a