ConsoleKeyInfo.KeyChar Property
Definition
Important
Some information relates to prerelease product that may be substantially modified before it’s released. Microsoft makes no warranties, express or implied, with respect to the information provided here.
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
Property Value
An object that corresponds to the console key represented by the current ConsoleKeyInfo object.
Examples
The following example uses the KeyChar property to add the characters input by the user into a string. 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);
}
}
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
Remarks
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.
Applies to
.NET
피드백
https://aka.ms/ContentUserFeedback
출시 예정: 2024년 내내 콘텐츠에 대한 피드백 메커니즘으로 GitHub 문제를 단계적으로 폐지하고 이를 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은 다음을 참조하세요.다음에 대한 사용자 의견 제출 및 보기