[ Foro de C# ]

Duda con Switch y ConsoleKeyInfo

23-Jul-2014 02:11
Invitado (Wind)
2 Respuestas

Saludos cordiales.

Estoy Experimentando con Switch y ConsoleKeyInfo. Todo va bien, hasta que agrego las siguientes lineas:

case ConsoleKey.1:
// Si agrego está parte, el programa no compila. Busco presionar la tecla 1
//¿Cuál es mi error?
                   Console.WriteLine("Haz presionado la tecla 1.");
                   break;

-----------------------------------------
Aquí va el programa completo.
using System;

namespace prueba
{
   class Program
   {
       static void Main()
       {
       
           Console.Write("Seleccione una opción: ");
           ConsoleKeyInfo tecla;
           tecla = Console.ReadKey();
           Console.WriteLine("");

           switch (tecla.Key)
           {
               case ConsoleKey.X:
                   Console.WriteLine("Haz presionado la tecla X.");
                   break;
                   
               case ConsoleKey.Escape:
                   Console.WriteLine("Haz presionado la tecla Esc.");
                   break;

               case ConsoleKey.1: // Si agrego está parte, el programa no compila.
                   Console.WriteLine("Haz presionado la tecla 1.");
                   break;
           }

           Console.ReadKey();
       }
   }
}


23-Jul-2014 11:39
Invitado (Caranim)

El problema es que no existe Consolekey.1, de ahí el error. El número "1" se puede detectar en dos teclas distintas en el teclado. Si es pulsada la tecla del teclado numérico, se detecta con ConsoleKey.NumPad1. Si se pulsa el otro "1" sería ConsoleKey.D1.


23-Jul-2014 16:12
Nacho Cabanes (+30)

Coincido con Caranim. En general, tres detalles que te pueden ayudar:

- Por una parte, ConsoleKey.1 no es esperable que funcione, porque "1" no es un identificador válido: los identificadores deben empezar (en general) por una letra.

- Por otra parte, si usas Visual Studio, en cuanto tecleas el "punto" tras "ConsoleKey", te aparecerá una serie de valores aceptables. Busca entre ellos a ver cuál suena bien.

- Finalmente, para C# el punto de información más fiable es la referencia oficial en MSDN. Si tecleas en Google u otro buscador "msdn consolekey" te llevará aquí, donde verás que tienes todos los valores posibles:

http://msdn.microsoft.com/es-es/library/system.consolekey(v=vs.110).aspx






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)