Console.KeyAvailable Proprietà
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Ottiene o imposta un valore che indica se nel flusso di input è stata rilevata la pressione di un tasto.
public:
static property bool KeyAvailable { bool get(); };
public static bool KeyAvailable { get; }
static member KeyAvailable : bool
Public Shared ReadOnly Property KeyAvailable As Boolean
Valore della proprietà
true
se è stata rilevata la pressione di un tasto; in caso contrario, false
.
Eccezioni
Si è verificato un errore di I/O.
L'input standard viene reindirizzato a un file invece che alla tastiera.
Esempio
Nell'esempio seguente viene illustrato come usare la KeyAvailable proprietà per creare un ciclo che viene eseguito finché non viene premuto un tasto.
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.
'
Commenti
Il valore della proprietà viene restituito immediatamente; ovvero, la proprietà non blocca l'input KeyAvailable finché non è disponibile un tasto.
Utilizzare la KeyAvailable proprietà insieme solo al ReadKey metodo, non ai Read metodi o ReadLine .