2010-06-18 41 views
8

Estoy tratando de pedirle al usuario que "ingrese cualquier tecla" y cuando se presiona esa tecla, se muestra que "Usted presionó 'Tecla'". ¿Puedes ayudarme con lo que está mal en este código?¿Cómo leer una tecla presionada por el usuario y mostrarla en la consola?

Esto es lo que he escrito:

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 nos fijamos en la documentación de ConsoleKey que tiene una muestra haciendo exactamente esto (pero un poco más avanzada): http://msdn.microsoft.com/en-us/library/system.consolekey .aspx –

Respuesta

9

Trate

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

En lugar de mostrar la Clave particular en la salida, está dando salida como "Ha presionado System.ConsoleKeyInfo – ThickBook

+0

¿Cambió la última línea" nombre "por" nombre.KeyChar "? – harriyott

+0

Lo cambié y está bien ahora, Cheeers! – ThickBook

0

Uso Console.ReadKey() en lugar de Read()

4

Console.Read() reacciona cuando el usuario presiona Introduzca, y devuelve toda la cadena que el usuario escribió antes de pulsar Enter. Para leer una presión de tecla, utilice

Console.ReadKey() 
+0

Hice lo que dijiste y está dando este error ahora. "No se puede convertir implícitamente el tipo 'System.ConsoleKeyInfo' en 'char' – ThickBook

+0

Sí,' Console.ReadKey() 'devuelve un' ConsoleKeyInfo' del que se obtiene el caracter con 'name.KeyChar', como lo muestra harriyott en su respuesta. –

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

El problema es que Console.Read() devuelve un número entero, no un char.

Sin embargo, int se puede convertir a char simplemente fundiéndolo. Por lo tanto, si coloca (char) delante de la instrucción de lectura, C# lo lanza a un char y funciona 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(); 
} 
Cuestiones relacionadas