2010-06-18 8 views
8

J'essaie de demander à l'utilisateur "entrer n'importe quelle touche" et quand cette touche est pressée, elle montre que "Vous avez appuyé sur la touche" ". Pouvez-vous aider ce qui ne va pas dans ce code?Comment lire une touche pressée par l'utilisateur et l'afficher sur la console?

C'est ce que je l'ai écrit:

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

Si vous regardez la documentation ConsoleKey il a un échantillon de faire exactement cela (mais un peu plus avancé): http://msdn.microsoft.com/en-us/library/system.consolekey .aspx –

Répondre

9

Essayez

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

Au lieu d'afficher la clé particulière dans la sortie, elle donne la sortie sous "Vous avez appuyé sur System.ConsoleKeyInfo – ThickBook

+0

Avez-vous changé la dernière ligne" nom "à" name.KeyChar "? – harriyott

+0

Je l'ai changé et ça va maintenant, Cheeers! – ThickBook

0

Utilisation Console.ReadKey() au lieu de Read()

4

Console.Read() réagit lorsque l'utilisateur appuie Entrez, et retourne la chaîne entière que l'utilisateur a tapé avant d'appuyer sur Entrer. Pour lire une séquence de touches, utilisez

Console.ReadKey() 
+0

Je l'ai fait comme vous l'avez dit et il donne cette erreur maintenant. Impossible de convertir implicitement le type 'System.ConsoleKeyInfo' en 'char' – ThickBook

+0

Oui, 'Console.ReadKey()' renvoie un 'ConsoleKeyInfo' à partir duquel vous obtenez le caractère avec' name.KeyChar', comme le montre harriyott dans sa réponse –

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

Le problème est que Console.Read() retourne un entier, non char.

Cependant, int peut être converti en char simplement en le moulant. Par conséquent, si vous mettez (char) en face de l'instruction read, C# le convertit en char et cela fonctionne bien.

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(); 
} 
Questions connexes