Console.ReadKey メソッド

定義

ユーザーによって押された次の文字キーまたはファンクション キーを取得します。Obtains the next character or function key pressed by the user.

オーバーロード

ReadKey()

ユーザーによって押された次の文字キーまたはファンクション キーを取得します。Obtains the next character or function key pressed by the user. 押されたキーは、コンソール ウィンドウに表示されます。The pressed key is displayed in the console window.

ReadKey(Boolean)

ユーザーによって押された次の文字キーまたはファンクション キーを取得します。Obtains the next character or function key pressed by the user. 押されたキーは、オプションでコンソール ウィンドウに表示されます。The pressed key is optionally displayed in the console window.

ReadKey()

ユーザーによって押された次の文字キーまたはファンクション キーを取得します。Obtains the next character or function key pressed by the user. 押されたキーは、コンソール ウィンドウに表示されます。The pressed key is displayed in the console window.

public:
 static ConsoleKeyInfo ReadKey();
[System.Runtime.Versioning.UnsupportedOSPlatform("browser")]
public static ConsoleKeyInfo ReadKey ();
public static ConsoleKeyInfo ReadKey ();
[<System.Runtime.Versioning.UnsupportedOSPlatform("browser")>]
static member ReadKey : unit -> ConsoleKeyInfo
static member ReadKey : unit -> ConsoleKeyInfo
Public Shared Function ReadKey () As ConsoleKeyInfo

戻り値

ConsoleKeyInfo

押されたコンソール キーに対応する ConsoleKey 定数と Unicode 文字 (存在する場合) を記述するオブジェクト。An object that describes the ConsoleKey constant and Unicode character, if any, that correspond to the pressed console key. また、ConsoleKeyInfo オブジェクトは、1 つ以上の Shift、Alt、Ctrl の各修飾子キーがコンソール キーと同時に押されたかどうかを ConsoleModifiers 値のビットごとの組み合わせで記述します。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.

属性

例外

In プロパティは、コンソール以外のストリームからリダイレクトされます。The In property is redirected from some stream other than the console.

メソッドの最も一般的な用途の1つ ReadKey() は、ユーザーがキーを押すまでプログラムの実行を中断し、アプリが終了するか、追加の情報ウィンドウを表示することです。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. 次の例では、メソッドを使用して、 ReadKey() ユーザーがアプリを終了する前に enter キーを押すのを待ちます。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

既定では、このメソッドのオーバーロードによって、 ReadKey ユーザーがコンソールに押した任意のキーがエコーされることに注意してください。Note that this overload of the ReadKey method by default echoes any displayable keys that the user presses to the console. これらを抑制するには、 ReadKey の引数を指定してメソッドを呼び出し intercept true ます。To suppress them, call the ReadKey method with an intercept argument of true.

次の例では、メソッドを使用し ReadKey() て、ユーザーが押したキーに関する情報を表示します。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 

注釈

メソッドは、 ReadKey ReadKey 文字または関数キーが押されるまで、メソッドを発行するスレッドのブロックを待機します。The ReadKey method waits, that is, blocks on the thread issuing the ReadKey method, until a character or function key is pressed. 文字または関数キーは、1つ以上の Alt、Ctrl、または Shift 修飾子キーと組み合わせて押すことができます。A character or function key can be pressed in combination with one or more Alt, Ctrl, or Shift modifier keys. ただし、修飾子キーを単独で押すと、メソッドは ReadKey を返しません。However, pressing a modifier key by itself will not cause the ReadKey method to return.

アプリケーションによっては、メソッドをプロパティと組み合わせて使用することもでき ReadKey KeyAvailable ます。Depending on your application, you might want to use the ReadKey method in conjunction with the KeyAvailable property.

メソッドは、 ReadKey 標準入力がメソッドを使用してファイルにリダイレクトされた場合でも、キーボードから読み取りを SetIn 行います。The ReadKey method reads from the keyboard even if the standard input is redirected to a file with the SetIn method.

こちらもご覧ください

適用対象

ReadKey(Boolean)

ユーザーによって押された次の文字キーまたはファンクション キーを取得します。Obtains the next character or function key pressed by the user. 押されたキーは、オプションでコンソール ウィンドウに表示されます。The pressed key is optionally displayed in the console window.

public:
 static ConsoleKeyInfo ReadKey(bool intercept);
[System.Runtime.Versioning.UnsupportedOSPlatform("browser")]
public static ConsoleKeyInfo ReadKey (bool intercept);
public static ConsoleKeyInfo ReadKey (bool intercept);
[<System.Runtime.Versioning.UnsupportedOSPlatform("browser")>]
static member ReadKey : bool -> ConsoleKeyInfo
static member ReadKey : bool -> ConsoleKeyInfo
Public Shared Function ReadKey (intercept As Boolean) As ConsoleKeyInfo

パラメーター

intercept
Boolean

押されたキーをコンソール ウィンドウに表示するかどうかを決定します。Determines whether to display the pressed key in the console window. 押されたキーを表示しない場合は true。それ以外の場合は falsetrue to not display the pressed key; otherwise, false.

戻り値

ConsoleKeyInfo

押されたコンソール キーに対応する ConsoleKey 定数と Unicode 文字 (存在する場合) を記述するオブジェクト。An object that describes the ConsoleKey constant and Unicode character, if any, that correspond to the pressed console key. また、ConsoleKeyInfo オブジェクトは、1 つ以上の Shift、Alt、Ctrl の各修飾子キーがコンソール キーと同時に押されたかどうかを ConsoleModifiers 値のビットごとの組み合わせで記述します。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.

属性

例外

In プロパティは、コンソール以外のストリームからリダイレクトされます。The In property is redirected from some stream other than the console.

メソッドの最も一般的な用途の1つ ReadKey は、ユーザーがキーを押すまでプログラムの実行を中断し、アプリが終了するか、追加の情報ウィンドウを表示することです。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. 次の例では、メソッドを使用して、 ReadKey(Boolean) ユーザーがアプリを終了する前に enter キーを押すのを待ちます。The following example uses the ReadKey(Boolean) method to wait for the user to press the Enter key before terminating the app. ユーザーが他のキーを押すと、コンソールにエコーされないことに注意してください。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

次の例では、メソッドを使用して、 ReadKey(Boolean) そのキーをコンソールにエコーせずに、ユーザーが押したキーに関する情報を表示します。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 '←')

注釈

メソッドは、 ReadKey ReadKey 文字または関数キーが押されるまで、メソッドを発行するスレッドのブロックを待機します。The ReadKey method waits, that is, blocks on the thread issuing the ReadKey method, until a character or function key is pressed. 文字または関数キーは、1つ以上の Alt、Ctrl、または Shift 修飾子キーと組み合わせて押すことができます。A character or function key can be pressed in combination with one or more Alt, Ctrl, or Shift modifier keys. ただし、修飾子キーを単独で押すと、メソッドは ReadKey を返しません。However, pressing a modifier key by itself will not cause the ReadKey method to return.

interceptパラメーターがの場合 true 、押されたキーはインターセプトされ、コンソールウィンドウに表示されません。それ以外の場合は、押されたキーが表示されます。If the intercept parameter is true, the pressed key is intercepted and not displayed in the console window; otherwise, the pressed key is displayed.

アプリケーションによっては、メソッドをプロパティと組み合わせて使用することもでき ReadKey KeyAvailable ます。Depending on your application, you might want to use the ReadKey method in conjunction with the KeyAvailable property.

メソッドは、 ReadKey 標準入力がメソッドを使用してファイルにリダイレクトされた場合でも、キーボードから読み取りを SetIn 行います。The ReadKey method reads from the keyboard even if the standard input is redirected to a file with the SetIn method.

こちらもご覧ください

適用対象