ConsoleKeyInfo Структура
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Описывает клавишу консоли, которая была нажата, включая символ, представленный ключом консоли, и состояние клавиш SHIFT, ALT и CTRL.
public value class ConsoleKeyInfo : IEquatable<ConsoleKeyInfo>
public value class ConsoleKeyInfo
public readonly struct ConsoleKeyInfo : IEquatable<ConsoleKeyInfo>
public struct ConsoleKeyInfo
public readonly struct ConsoleKeyInfo
[System.Serializable]
public struct ConsoleKeyInfo
type ConsoleKeyInfo = struct
[<System.Serializable>]
type ConsoleKeyInfo = struct
Public Structure ConsoleKeyInfo
Implements IEquatable(Of ConsoleKeyInfo)
Public Structure ConsoleKeyInfo
- Наследование
- Атрибуты
- Реализации
Примеры
В следующем примере показано использование ConsoleKeyInfo объекта в операции чтения.
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
open System
// Prevent example from ending if CTL+C is pressed.
Console.TreatControlCAsInput <- true
printfn "Press any combination of CTL, ALT, and SHIFT, and a console key."
printfn "Press the Escape (Esc) key to quit: \n"
let mutable cki = Unchecked.defaultof<ConsoleKeyInfo>
while cki.Key <> ConsoleKey.Escape do
cki <- Console.ReadKey()
printf " --- You pressed "
if int (cki.Modifiers &&& ConsoleModifiers.Alt) <> 0 then printf "ALT+"
if int (cki.Modifiers &&& ConsoleModifiers.Shift) <> 0 then printf "SHIFT+"
if int (cki.Modifiers &&& ConsoleModifiers.Control) <> 0 then printf "CTL+"
printfn $"{cki.Key}"
// 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
Комментарии
Тип ConsoleKeyInfo не предназначен для создания пользователями. Вместо этого он возвращается пользователю в ответ на вызов Console.ReadKey метода.
Объект ConsoleKeyInfo описывает ConsoleKey константу и символ Юникода, соответствующие нажатию клавиши консоли. Объект ConsoleKeyInfo также описывает побитовое сочетание значений ConsoleModifiers , независимо от того, нажимается ли один или несколько клавиш SHIFT, ALT или CTRL одновременно с клавишей консоли.
Конструкторы
| Имя | Описание |
|---|---|
| ConsoleKeyInfo(Char, ConsoleKey, Boolean, Boolean, Boolean) |
Инициализирует новый экземпляр структуры с помощью указанных символов, ключей ConsoleKeyInfo консоли и модификаторов. |
Свойства
| Имя | Описание |
|---|---|
| Key |
Возвращает ключ консоли, представленный текущим ConsoleKeyInfo объектом. |
| KeyChar |
Возвращает символ Юникода, представленный текущим ConsoleKeyInfo объектом. |
| Modifiers |
Получает побитовое сочетание значений ConsoleModifiers , указывающее один или несколько клавиш модификатора, нажимаемых одновременно с ключом консоли. |
Методы
| Имя | Описание |
|---|---|
| Equals(ConsoleKeyInfo) |
Возвращает значение, указывающее, равен ли указанный ConsoleKeyInfo объект текущему ConsoleKeyInfo объекту. |
| Equals(Object) |
Возвращает значение, указывающее, равен ли указанный объект текущему ConsoleKeyInfo объекту. |
| GetHashCode() |
Возвращает хэш-код для текущего ConsoleKeyInfo объекта. |
Операторы
| Имя | Описание |
|---|---|
| Equality(ConsoleKeyInfo, ConsoleKeyInfo) |
Указывает, равны ли указанные ConsoleKeyInfo объекты. |
| Inequality(ConsoleKeyInfo, ConsoleKeyInfo) |
Указывает, равны ли указанные ConsoleKeyInfo объекты. |