¡Estoy haciendo un menú. Quiero utilice las teclas de flecha para seleccionar mi lista.

char move;

do
{
    move = (char)_getch();
    if (move == 38)
    {
         //Move Indicator Up   
    }
    else if (move == 40)
    {
         //Move Indicator Down
    }
}
while (move != 13);

Estoy utilizando el mal de los valores ascii de teclas de arriba y abajo?

RESUELTO

he sustituido (char)_getch() a (int)_getch() y char mover para mover int
a continuación, 38 y 40 a ?? y el 80

  • ¿qué es _getch() ? Veo a C# como una etiqueta.
  • lo que está en _getch()?
  • Está usted seguro de que este es el código de C#? Basado en su llamada a _getch, se parece más a C.
  • es c#. He tratado de sustituir 38 ‘w’ y ha funcionado.
  • Son P/Invocando _getch() de msvcrt.dll? Y si es así, porque?
  • yo no se por qué ahora. yo lo he utilizado en mi anterior juego de laberinto y funciona correctamente. i;m acaba de tener un tiempo difícil cuando se trata de las teclas de flecha.
  • En lugar de marcar el texto de la pregunta como «RESUELTO» usted debe aceptar una respuesta.
  • aceptar una respuesta!? No obtuve la respuesta que yo quiero todavía. ahora no. :))
  • ambas respuestas debajo parecen funcionar 🙂 Se que no es lo que estás buscando? A menos que tenga una muy buena razón, usted no debe pinvoke funciones de c en c# si hay un c# contraparte para ya.
  • Es resuelto ahora. 80 es para abajo y 72 es para arriba. Gracias por el esfuerzo de los chicos. Voy a elegir una respuesta todavía.
  • Uh, usted debe utilizar Console.Read o Console.ReadKey. P/Invocando _getch() es definitivamente la solución equivocada. Verificar aquí para C#, equivalentes a funciones CRT.
  • Yo tendría que estar de acuerdo con Cody no
  • Si la respuesta no era la correcta, debido a que su pregunta era demasiado trivial o muy localizadas a tu problema en particular, por favor intente resolverlo usted mismo. Una pregunta para cada pequeño cambio incremental de hacer que su código es considerada como ayuda vampirismo y el resultado será que su cuenta sea bloqueada a partir de la formulación de preguntas.

2 Comentarios

  1. 6

    Parece que usted es DllImporting msvcrt.dll el uso de _getch()

    Trate de usar la Consola.ReadKey()

    ConsoleKeyInfo keyInfo = Console.ReadKey();
    if (keyInfo.Key == ConsoleKey.UpArrow) {
    
    } else if (keyInfo.Key == ConsoleKey.DownArrow) {
    
    } ...
  2. 1

    En caso estamos hablando de una aplicación de WinForms yo recomendaría el uso de la De Control.Evento KeyDown.
    «De la consola.Read()» no funciona para aplicaciones WinForms.

    Actualización
    Ejemplo de menú de navegación con la tecla de flecha para aplicación de consola en C#. >> Ejemplo 1 Ejemplo 2

    • es la Consola de Apps

Dejar respuesta

Please enter your comment!
Please enter your name here