2010-06-18 6 views
8

Próbuję zapytać użytkownika "wprowadź dowolny klawisz", a po naciśnięciu tego klawisza pokazuje "Wciśnięty" klucz "". Czy możesz pomóc, co jest nie tak w tym kodzie?Jak odczytać klawisz wciśnięty przez użytkownika i wyświetlić go na konsoli?

To co napisałem:

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); 
    } 
} 
+0

Jeśli spojrzeć na dokumentacji ConsoleKey to dostał próbkę robi dokładnie to (ale nieco bardziej zaawansowany): http://msdn.microsoft.com/en-us/library/system.consolekey .aspx –

Odpowiedz

9

Spróbuj

Console.WriteLine("Enter any Key: "); 
ConsoleKeyInfo name = Console.ReadKey(); 
Console.WriteLine("You pressed {0}", name.KeyChar); 
+0

Zamiast pokazywać konkretny klucz na wyjściu, daje on wynik jako "Nacisnąłeś System.ConsoleKeyInfo – ThickBook

+0

Czy zmieniłeś ostatnią linię" name "na" name.KeyChar "? – harriyott

+0

Zmieniłem go i teraz jest w porządku, Cheeers! – ThickBook

4

Console.Read() reaguje, gdy użytkownik naciśnie Wprowadź i zwraca cały ciąg, że użytkownik wpisany przed naciśnięciem Enter. Aby przeczytać jedno naciśnięcie klawisza, użyj

Console.ReadKey() 
+0

Zrobiłem tak, jak powiedziałeś, i teraz dajesz ten błąd. "Nie można niejawnie przekonwertować typu" System.ConsoleKeyInfo "na" char " – ThickBook

+0

Tak,' Console.ReadKey() 'zwraca' ConsoleKeyInfo', z którego otrzymujesz znak z 'name.KeyChar', jak pokazuje harriyott w swojej odpowiedzi. –

0
Console.Write("Enter any Key: "); 
char name = (char)Console.Read(); 
Console.WriteLine("You pressed {0}", name); 

Problemem jest to, że Console.Read() zwraca liczbę całkowitą, a nie char.

Jednak int może zostać przekonwertowane na char po prostu przez rzutowanie. Dlatego jeśli umieścisz (znak) przed instrukcją odczytu, C# rzuci ją na znak i działa poprawnie.

0
string keypress = ""; 

Console.Write("Enter any key: "); 
keypress = Console.ReadLine(); 
Console.Write("\nYou pressed {0}",keypress); 
0
{ 
    Console.Write("Enter any Key: "); 
    char name = Convert.ToChar(Console.ReadLine()); 
    Console.WriteLine("You pressed {0}", name); 

    Console.ReadKey(); 
} 
Powiązane problemy