ConsoleKeyInfo.KeyChar Özellik
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
Geçerli ConsoleKeyInfo nesne tarafından temsil edilen Unicode karakterini alır.
public:
property char KeyChar { char get(); };
public char KeyChar { get; }
member this.KeyChar : char
Public ReadOnly Property KeyChar As Char
Özellik Değeri
Geçerli ConsoleKeyInfo nesneyle temsil edilen konsol anahtarına karşılık gelen bir nesne.
Örnekler
Aşağıdaki örnekte, kullanıcı tarafından giriş yapılan karakterleri bir dizeye eklemek için özelliği kullanılır KeyChar . Örnek ENTER, ESC ve GERİ AL dışındaki özel anahtarları yoksayar.
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
Açıklamalar
Basılan tuş bir Unicode karakterine eşlenmiyorsa (örneğin, kullanıcı F1 tuşuna veya Giriş tuşuna basarsa), özelliğin KeyChar değeri \U0000'dir.