ConsoleKeyInfo.KeyChar Właściwość

Definicja

Pobiera znak Unicode reprezentowany przez bieżący obiekt ConsoleKeyInfo.Gets the Unicode character represented by the current ConsoleKeyInfo object.

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

Wartość właściwości

Obiekt, który odnosi się do klucza konsoli reprezentowanego przez bieżący obiekt ConsoleKeyInfo.An object that corresponds to the console key represented by the current ConsoleKeyInfo object.

Przykłady

W poniższym przykładzie zastosowano Właściwość KeyChar, aby dodać znaki wprowadzone przez użytkownika do ciągu.The following example uses the KeyChar property to add the characters input by the user into a string. W przykładzie ignorowane są klucze specjalne inne niż Enter, ESCi Backspace.The example ignores special keys other than ENTER, ESC, and 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);
   }
}
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

Uwagi

Jeśli naciśnięcie klawisza nie mapuje na znak Unicode (na przykład jeśli użytkownik naciśnie klawisz F1 lub klawisza Home ), wartość właściwości KeyChar jest \u0000.If the key pressed does not map to a Unicode character (for example, if the user presses the F1 key or the Home key), the value of the KeyChar property is \U0000.

Dotyczy