Как прочитать нажатую пользователем клавишу и отобразить ее на консоли? - PullRequest
12 голосов
/ 18 июня 2010

Я пытаюсь попросить пользователя «ввести любую клавишу», и когда эта клавиша нажата, она показывает, что «вы нажали« клавишу »».Можете ли вы помочь, что не так в этом коде?

Это то, что я написал:

using System;
class Program
{
    public static void Main(string[] args)
    {      
        Console.Write("Enter any Key: ");
        char name = Console.Read();
        Console.WriteLine("You pressed {0}", name);
    }
}

Ответы [ 6 ]

12 голосов
/ 18 июня 2010

Попробуйте

Console.WriteLine("Enter any Key: ");
ConsoleKeyInfo name = Console.ReadKey();
Console.WriteLine("You pressed {0}", name.KeyChar);
5 голосов
/ 18 июня 2010

Console.Read() реагирует, когда пользователь нажимает Ввод , и возвращает всю строку, введенную пользователем перед нажатием Ввод .Чтобы прочитать одно нажатие клавиши, используйте

Console.ReadKey()
0 голосов
/ 25 июля 2015
{
    Console.Write("Enter any Key: ");
    char name = Convert.ToChar(Console.ReadLine());
    Console.WriteLine("You pressed {0}", name);

    Console.ReadKey();
}
0 голосов
/ 22 апреля 2014
string keypress = "";

Console.Write("Enter any key: ");
keypress = Console.ReadLine();
Console.Write("\nYou pressed {0}",keypress);
0 голосов
/ 18 июня 2010
Console.Write("Enter any Key: ");
char name = (char)Console.Read();
Console.WriteLine("You pressed {0}", name); 

Проблема в том, что Console.Read () возвращает целое число, а не символ.

Однако, int может быть преобразован в char просто путем его приведения. Поэтому, если вы поместите (char) перед оператором read, C # преобразует его в char, и все работает нормально.

0 голосов
/ 18 июня 2010

Используйте Console.ReadKey() вместо Read()

...