Console.ReadKey Metoda

Definicja

Pobiera następny znak lub funkcję wskutek naciśnięcia klawisza przez użytkownika.Obtains the next character or function key pressed by the user.

Przeciążenia

ReadKey()

Pobiera następny znak lub funkcję wskutek naciśnięcia klawisza przez użytkownika.Obtains the next character or function key pressed by the user. Naciśnięty klawisz jest wyświetlany w oknie konsoli.The pressed key is displayed in the console window.

ReadKey(Boolean)

Pobiera następny znak lub funkcję wskutek naciśnięcia klawisza przez użytkownika.Obtains the next character or function key pressed by the user. Naciśnięty klawisz jest opcjonalnie wyświetlany w oknie konsoli.The pressed key is optionally displayed in the console window.

ReadKey()

Pobiera następny znak lub funkcję wskutek naciśnięcia klawisza przez użytkownika.Obtains the next character or function key pressed by the user. Naciśnięty klawisz jest wyświetlany w oknie konsoli.The pressed key is displayed in the console window.

public:
 static ConsoleKeyInfo ReadKey();
public static ConsoleKeyInfo ReadKey ();
static member ReadKey : unit -> ConsoleKeyInfo
Public Shared Function ReadKey () As ConsoleKeyInfo

Zwraca

ConsoleKeyInfo

Obiekt, który opisuje ConsoleKey stałą i znak Unicode, jeśli istnieje, który odpowiada klawiszowi konsoli naciśniętej.An object that describes the ConsoleKey constant and Unicode character, if any, that correspond to the pressed console key. ConsoleKeyInfoObiekt opisuje również w bitowej kombinacji ConsoleModifiers wartości, czy jeden lub więcej klawiszy modyfikujących Shift, Alt lub CTRL został nacionięty jednocześnie z klawiszem konsoli.The ConsoleKeyInfo object also describes, in a bitwise combination of ConsoleModifiers values, whether one or more Shift, Alt, or Ctrl modifier keys was pressed simultaneously with the console key.

Wyjątki

InWłaściwość zostanie przekierowana z pewnego strumienia innego niż konsola.The In property is redirected from some stream other than the console.

Przykłady

Jednym z najczęściej używanych ReadKey() metod jest zatrzymanie wykonywania programu do momentu naciśnięcia klawisza i przerwanie działania aplikacji lub wyświetlenie dodatkowego okna informacji.One of the most common uses of the ReadKey() method is to halt program execution until the user presses a key and the app either terminates or displays an additional window of information. Poniższy przykład używa metody, ReadKey() aby poczekać, aż użytkownik naciśnie klawisz ENTER przed zakończeniem działania aplikacji.The following example uses the ReadKey() method to wait for the user to press the Enter key before terminating the app.

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
Module Example
   Public Sub Main()
      Dim dat As Date = Date.Now
      Console.WriteLine("The time: {0:d} at {0:t}", dat)
      Dim tz As TimeZoneInfo = TimeZoneInfo.Local
      Console.WriteLine("The time zone: {0}", 
                        If(tz.IsDaylightSavingTime(dat),
                           tz.DaylightName, tz.StandardName))
      Console.WriteLine()
      Console.Write("Press <Enter> to exit... ")
      Do While Console.ReadKey().Key <> ConsoleKey.Enter
      Loop
   End Sub
End Module
' The example displays the following output:
'     The time: 11/11/2015 at 4:02 PM
'     The time zone: Pacific Standard Time

Należy zauważyć, że to Przeciążenie ReadKey metody domyślnie zwraca wszystkie klucze, które użytkownik naciśnie do konsoli.Note that this overload of the ReadKey method by default echoes any displayable keys that the user presses to the console. Aby je pominąć, należy wywołać ReadKey metodę z intercept argumentem true .To suppress them, call the ReadKey method with an intercept argument of true.

W poniższym przykładzie zastosowano ReadKey() metodę, aby wyświetlić informacje o kluczu, który został naciśnięty przez użytkownika.The following example uses the ReadKey() method to display information about which key the user pressed.

using namespace System;

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) != ConsoleModifiers()) Console::Write("ALT+");
      if((cki.Modifiers & ConsoleModifiers::Shift) != ConsoleModifiers()) Console::Write("SHIFT+");
      if((cki.Modifiers & ConsoleModifiers::Control) != ConsoleModifiers()) 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 }
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
Class Example
   Public Shared Sub Main()
      Dim cki As ConsoleKeyInfo
      ' 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: " + vbCrLf)
      Do
         cki = Console.ReadKey()
         Console.Write(" --- You pressed ")
         If (cki.Modifiers And ConsoleModifiers.Alt) <> 0 Then Console.Write("ALT+")
         If (cki.Modifiers And ConsoleModifiers.Shift) <> 0 Then Console.Write("SHIFT+")
         If (cki.Modifiers And ConsoleModifiers.Control) <> 0 Then Console.Write("CTL+")
         Console.WriteLine(cki.Key.ToString)
      Loop While cki.Key <> ConsoleKey.Escape
   End Sub 
End Class 
' 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 

Uwagi

ReadKeyMetoda czeka, czyli bloki w wątku, który wystawia ReadKey metodę, dopóki nie zostanie naciśnięty znak lub klawisz funkcyjny.The ReadKey method waits, that is, blocks on the thread issuing the ReadKey method, until a character or function key is pressed. Znak lub klucz funkcji można nacisnąć w połączeniu z co najmniej jednym klawiszem modyfikującym Alt, CTRL lub Shift.A character or function key can be pressed in combination with one or more Alt, Ctrl, or Shift modifier keys. Jednak naciśnięcie klawisza modyfikującego nie będzie powodowało ReadKey zwrócenia metody.However, pressing a modifier key by itself will not cause the ReadKey method to return.

W zależności od aplikacji może być konieczne użycie ReadKey metody w połączeniu z KeyAvailable właściwością.Depending on your application, you might want to use the ReadKey method in conjunction with the KeyAvailable property.

ReadKeyMetoda odczytuje z klawiatury, nawet jeśli standardowe dane wejściowe są przekierowywane do pliku przy użyciu SetIn metody.The ReadKey method reads from the keyboard even if the standard input is redirected to a file with the SetIn method.

Zobacz też

Dotyczy

Produkt Wprowadzono

ReadKey(Boolean)

Pobiera następny znak lub funkcję wskutek naciśnięcia klawisza przez użytkownika.Obtains the next character or function key pressed by the user. Naciśnięty klawisz jest opcjonalnie wyświetlany w oknie konsoli.The pressed key is optionally displayed in the console window.

public:
 static ConsoleKeyInfo ReadKey(bool intercept);
public static ConsoleKeyInfo ReadKey (bool intercept);
static member ReadKey : bool -> ConsoleKeyInfo
Public Shared Function ReadKey (intercept As Boolean) As ConsoleKeyInfo

Parametry

intercept
Boolean

Określa, czy naciśniętego klawisza ma być wyświetlany w oknie konsoli.Determines whether to display the pressed key in the console window. true Aby nie wyświetlać naciśniętego klawisza; w przeciwnym razie false .true to not display the pressed key; otherwise, false.

Zwraca

ConsoleKeyInfo

Obiekt, który opisuje ConsoleKey stałą i znak Unicode, jeśli istnieje, który odpowiada klawiszowi konsoli naciśniętej.An object that describes the ConsoleKey constant and Unicode character, if any, that correspond to the pressed console key. ConsoleKeyInfoObiekt opisuje również w bitowej kombinacji ConsoleModifiers wartości, czy jeden lub więcej klawiszy modyfikujących Shift, Alt lub CTRL został nacionięty jednocześnie z klawiszem konsoli.The ConsoleKeyInfo object also describes, in a bitwise combination of ConsoleModifiers values, whether one or more Shift, Alt, or Ctrl modifier keys was pressed simultaneously with the console key.

Wyjątki

InWłaściwość zostanie przekierowana z pewnego strumienia innego niż konsola.The In property is redirected from some stream other than the console.

Przykłady

Jednym z najczęściej używanych ReadKey metod jest zatrzymanie wykonywania programu do momentu naciśnięcia klawisza i przerwanie działania aplikacji lub wyświetlenie dodatkowego okna informacji.One of the most common uses of the ReadKey method is to halt program execution until the user presses a key and the app either terminates or displays an additional window of information. Poniższy przykład używa metody, ReadKey(Boolean) aby poczekać, aż użytkownik naciśnie klawisz ENTER przed zakończeniem działania aplikacji.The following example uses the ReadKey(Boolean) method to wait for the user to press the Enter key before terminating the app. Należy pamiętać, że jeśli użytkownik naciśnie dowolny inny klawisz, nie zostanie on echany do konsoli programu.Note that, if the user presses any other key, it is not echoed to the 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
Module Example
   Public Sub Main()
      Dim dat As Date = Date.Now
      Console.WriteLine("The time: {0:d} at {0:t}", dat)
      Dim tz As TimeZoneInfo = TimeZoneInfo.Local
      Console.WriteLine("The time zone: {0}", 
                        If(tz.IsDaylightSavingTime(dat),
                           tz.DaylightName, tz.StandardName))
      Console.WriteLine()
      Console.Write("Press <Enter> to exit... ")
      Do While Console.ReadKey(True).Key <> ConsoleKey.Enter
      Loop
   End Sub
End Module
' The example displays the following output:
'     The time: 11/11/2015 at 4:02 PM
'     The time zone: Pacific Standard Time

W poniższym przykładzie zastosowano ReadKey(Boolean) metodę, aby wyświetlić informacje o kluczu, który został naciśnięty przez użytkownika bez wyświetlania tego klucza w konsoli programu.The following example uses the ReadKey(Boolean) method to display information about the key pressed by a user without echoing that key to the console.

using namespace System;

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) != ConsoleModifiers()) Console::Write("ALT+");
      if ((cki.Modifiers & ConsoleModifiers::Shift) != ConsoleModifiers()) Console::Write("SHIFT+");
      if ((cki.Modifiers & ConsoleModifiers::Control) != ConsoleModifiers()) 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 '←')
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 '←')
Class Example
   Public Shared Sub Main()
      Dim cki As ConsoleKeyInfo
      ' 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: " + vbCrLf)
      Do
         cki = Console.ReadKey(True)
         Console.Write("You pressed ")
         If (cki.Modifiers And ConsoleModifiers.Alt) <> 0 Then Console.Write("ALT+")
         If (cki.Modifiers And ConsoleModifiers.Shift) <> 0 Then Console.Write("SHIFT+")
         If (cki.Modifiers And ConsoleModifiers.Control) <> 0 Then Console.Write("CTL+")
         Console.WriteLine("{0} (character '{1}')", cki.Key, cki.KeyChar)
      Loop While cki.Key <> ConsoleKey.Escape
   End Sub
End Class 
' 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 '←')

Uwagi

ReadKeyMetoda czeka, czyli bloki w wątku, który wystawia ReadKey metodę, dopóki nie zostanie naciśnięty znak lub klawisz funkcyjny.The ReadKey method waits, that is, blocks on the thread issuing the ReadKey method, until a character or function key is pressed. Znak lub klucz funkcji można nacisnąć w połączeniu z co najmniej jednym klawiszem modyfikującym Alt, CTRL lub Shift.A character or function key can be pressed in combination with one or more Alt, Ctrl, or Shift modifier keys. Jednak naciśnięcie klawisza modyfikującego nie będzie powodowało ReadKey zwrócenia metody.However, pressing a modifier key by itself will not cause the ReadKey method to return.

Jeśli intercept parametr ma wartość true , naciśnięty klawisz jest przechwytywany i nie jest wyświetlany w oknie konsoli; w przeciwnym razie zostanie wyświetlony klawisz naciśnięty.If the intercept parameter is true, the pressed key is intercepted and not displayed in the console window; otherwise, the pressed key is displayed.

W zależności od aplikacji może być konieczne użycie ReadKey metody w połączeniu z KeyAvailable właściwością.Depending on your application, you might want to use the ReadKey method in conjunction with the KeyAvailable property.

ReadKeyMetoda odczytuje z klawiatury, nawet jeśli standardowe dane wejściowe są przekierowywane do pliku przy użyciu SetIn metody.The ReadKey method reads from the keyboard even if the standard input is redirected to a file with the SetIn method.

Zobacz też

Dotyczy

Produkt Wprowadzono