Partager via


ConsoleKeyInfo.KeyChar Propriété

Définition

Obtient le caractère Unicode représenté par l'objet ConsoleKeyInfo en cours.

public:
 property char KeyChar { char get(); };
public char KeyChar { get; }
member this.KeyChar : char
Public ReadOnly Property KeyChar As Char

Valeur de propriété

Char

Objet qui correspond à la touche de console représentée par l'objet ConsoleKeyInfo en cours.

Exemples

L’exemple suivant utilise la KeyChar propriété pour ajouter les caractères d’entrée par l’utilisateur dans une chaîne. L’exemple ignore les clés spéciales autres que ENTER, ESC et BACKSPACE.

using System;

public class Example
{
   public static void Main()
   {
      // Configure console.
      Console.BufferWidth = 80;
      Console.WindowWidth = Console.BufferWidth;
      Console.TreatControlCAsInput = true;

      string inputString = String.Empty;
      ConsoleKeyInfo keyInfo;

      Console.WriteLine("Enter a string. Press <Enter> or Esc to exit.");
      do {
         keyInfo = Console.ReadKey(true);
         // Ignore if Alt or Ctrl is pressed.
         if ((keyInfo.Modifiers & ConsoleModifiers.Alt) == ConsoleModifiers.Alt)
            continue;
         if ((keyInfo.Modifiers & ConsoleModifiers.Control) == ConsoleModifiers.Control)
            continue;
         // Ignore if KeyChar value is \u0000.
         if (keyInfo.KeyChar == '\u0000') continue;
         // Ignore tab key.
         if (keyInfo.Key == ConsoleKey.Tab) continue;
         // Handle backspace.
         if (keyInfo.Key == ConsoleKey.Backspace) {
            // Are there any characters to erase?
            if (inputString.Length >= 1) {
               // Determine where we are in the console buffer.
               int cursorCol = Console.CursorLeft - 1;
               int oldLength = inputString.Length;
               int extraRows = oldLength / 80;

               inputString = inputString.Substring(0, oldLength - 1);
               Console.CursorLeft = 0;
               Console.CursorTop = Console.CursorTop - extraRows;
               Console.Write(inputString + new String(' ', oldLength - inputString.Length));
               Console.CursorLeft = cursorCol;
            }
            continue;
         }
         // Handle Escape key.
         if (keyInfo.Key == ConsoleKey.Escape) break;
         // Handle key by adding it to input string.
         Console.Write(keyInfo.KeyChar);
         inputString += keyInfo.KeyChar;
      } while (keyInfo.Key != ConsoleKey.Enter);
      Console.WriteLine("\n\nYou entered:\n    {0}",
                        String.IsNullOrEmpty(inputString) ? "<nothing>" : inputString);
   }
}
open System

// Configure console.
Console.TreatControlCAsInput <- true

printfn "Enter a string. Press <Enter> or Esc to exit."

let mutable inputString = String.Empty
let mutable keyInfo = Unchecked.defaultof<ConsoleKeyInfo>

while keyInfo.Key <> ConsoleKey.Enter && keyInfo.Key <> ConsoleKey.Escape do
    keyInfo <- Console.ReadKey true
    
    // Ignore if Alt or Ctrl is pressed.
    if keyInfo.Modifiers &&& ConsoleModifiers.Alt <> ConsoleModifiers.Alt &&
       keyInfo.Modifiers &&& ConsoleModifiers.Control <> ConsoleModifiers.Control &&
       // Ignore if KeyChar value is \u0000.
       keyInfo.KeyChar <> '\u0000' &&
       // Ignore tab key.
       keyInfo.Key <> ConsoleKey.Tab then
        
        // Handle backspace.
        if keyInfo.Key = ConsoleKey.Backspace then
            // Are there any characters to erase?
            if inputString.Length >= 1 then
                // Determine where we are in the console buffer.
                let cursorCol = Console.CursorLeft - 1
                let oldLength = inputString.Length
                let extraRows = oldLength / 80

                inputString <- inputString.Substring(0, oldLength - 1)
                Console.CursorLeft <- 0
                Console.CursorTop <- Console.CursorTop - extraRows
                printf $"{inputString + String(' ', oldLength - inputString.Length)}"
                Console.CursorLeft <- cursorCol
        else
            // Handle key by adding it to input string.
            printf $"{keyInfo.KeyChar}"
            inputString <- inputString + string keyInfo.KeyChar
    
printfn $"""

You entered:
    {if String.IsNullOrEmpty inputString then "<nothing>" else inputString}"""
Module Example
   Public Sub Main()
      ' Configure console.
      Console.BufferWidth = 80
      Console.WindowWidth = Console.BufferWidth
      Console.TreatControlCAsInput = True
      
      Dim inputString As String = String.Empty
      Dim keyInfo As ConsoleKeyInfo

      Console.WriteLine("Enter a string. Press <Enter> or Esc to exit.")
      Do
         keyInfo = Console.ReadKey(True)
         ' Ignore if Alt or Ctrl is pressed.
         If (keyInfo.Modifiers And ConsoleModifiers.Alt) = ConsoleModifiers.Alt _
                              Then Continue Do 
         If (keyInfo.Modifiers And ConsoleModifiers.Control) = ConsoleModifiers.Control _
                              Then Continue Do 
         ' Ignore if KeyChar value is \u0000.
         If keyInfo.KeyChar = ChrW(0) Then Continue Do
         ' Ignore tab, clear key.
         If keyInfo.Key = ConsoleKey.Tab Then Continue Do
         ' Handle backspace.
         If keyInfo.Key = ConsoleKey.Backspace Then
            ' Are there any characters to erase?
            If inputString.Length >= 1 Then
               ' Determine where we are in the console buffer.
               Dim cursorCol As Integer = Console.CursorLeft - 1
               Dim oldLength As Integer = inputString.Length
               Dim extraRows As Integer = oldLength \ 80

               inputString = inputString.Substring(0, oldLength - 1)
               Console.CursorLeft = 0
               Console.CursorTop = Console.CursorTop - extraRows
               Console.Write(inputString + New String(" "c, oldLength - inputString.Length))
               Console.CursorLeft = cursorCol
            End If
            Continue Do
         End If   
         ' Handle Escape key.
         If keyInfo.Key = ConsoleKey.Escape Then Exit Do
         ' Handle key by adding it to input string.
         Console.Write(keyInfo.KeyChar)
         inputString += keyInfo.KeyChar 
      Loop While keyInfo.Key <> ConsoleKey.Enter
      Console.WriteLine("{0}{0}You entered:{0}    {1}", vbCrLf, _
                        IIf(String.IsNullOrEmpty(inputString), "<nothing>", inputString))
   End Sub
End Module

Remarques

Si la touche enfoncée ne correspond pas à un caractère Unicode (par exemple, si l’utilisateur appuie sur la touche F1 ou la touche Accueil ), la valeur de la KeyChar propriété est \U0000.

S’applique à