Teniendo este programa, no se comporta como quiero. Se trata de usar solo las teclas flechas y la tecla Enter. Con ello se puede crear un nombre, escribir un nombre que quiera. Cuando ya termine, pulso Enter y se posiciona en la parte indicada en la imagen de abajo.
Aquí abajo, escribí todo a AAAAAAAAAAAAA.
Al pulsar Enter, tiene que ser capaz de señalar con las teclas flechas izquiera y derecha para poder elegir ATRÁS o GUARDAR.
Una vez que haya elegido con el símbolo en > ATRÁS, si pulsa Enter muestra un mensaje:
Código:
El programa en esta parte se acaba ahí.Console.Write("HAS PULSADO ATRÁS ");
Si con las flechas del teclado selecciona en > GUARDAR, luego pulsa la tecla Enter. A parte que el nombre como en este caso AAAAAAAAAAA, se almacena en la variable...
Código:
Muestra el mensaje: HAS GUARDADO y el nombre AAAAAAAAAAAAAAAA en pantalla.static string guardarNombre = "";
Código completo en C#:
Código:
¿Alguna idea?using System; namespace LCD_nombre_archivo_consola_06 { class Program { static string guardarNombre = ""; static int coordenadaX = 0; private static ConsoleKey tecla; // Caracteres de este array. static readonly char[] roALFANUMERICO = new char[] { 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'Ñ', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'ñ', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'x', 'y', 'z', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9','.', ',', '-', '_', ':', ';', '¿', '?', '(', ')', '[', ']', '{', '}','=', '$','&', '"', ' ' }; // Dirección del carácter del array. El 80 presenta al espacio del array roALFANUMERICO. static readonly int[] roINDICE_ARRAY = new int[] { 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80 }; private static readonly string[] roTEXTO = new string[] { "ATRÁS", "GUARDAR" }; static int index = 0; static void Main(string[] args) { // Título de la pantalla. Console.Title = "Cambiar nombre"; Inicio(); } #region Inico. private static void Inicio() { // Tamaño de la ventana. Console.SetWindowSize(20, 5); // Fondo verde. Console.BackgroundColor = ConsoleColor.Blue; // Letras negras. Console.ForegroundColor = ConsoleColor.White; // Limpiar pantalla. Console.Clear(); Console.SetCursorPosition(0, 0); Console.Write("Nombre del relé 1: "); Console.SetCursorPosition(0, 1); //Console.Write("AAAAAAAAAAAAAAAA"); // Recorre todo el índice del array y el de los datos alfanumérico // y los rellena. for (int i = 0; i < roINDICE_ARRAY.Length; i++) { Console.Write(roALFANUMERICO[roINDICE_ARRAY[i]]); } Console.SetCursorPosition(2, 3); Console.Write(roTEXTO[0]); // ATRÁS. Console.SetCursorPosition(12, 3); Console.Write(roTEXTO[1]); // GUARDAR. while (true) { Console.SetCursorPosition(coordenadaX, 1); // Almacena cualquier tecla pulsada en la variable key. tecla = Console.ReadKey(true).Key; switch (tecla) { case ConsoleKey.RightArrow: if (coordenadaX < 15) { coordenadaX++; } break; case ConsoleKey.LeftArrow: if (coordenadaX > 0) { coordenadaX--; } break; case ConsoleKey.UpArrow: roINDICE_ARRAY[coordenadaX]++; if (roINDICE_ARRAY[coordenadaX] >= roALFANUMERICO.Length) { roINDICE_ARRAY[coordenadaX] = 0; } Console.Write(roALFANUMERICO[roINDICE_ARRAY[coordenadaX]]); break; case ConsoleKey.DownArrow: roINDICE_ARRAY[coordenadaX]--; if (roINDICE_ARRAY[coordenadaX] < 0) { roINDICE_ARRAY[coordenadaX] = roALFANUMERICO.Length - 1; } Console.Write(roALFANUMERICO[roINDICE_ARRAY[coordenadaX]]); break; case ConsoleKey.Enter: Console.SetCursorPosition(1, 3); Console.Write(">"); while (true) { tecla = Console.ReadKey(true).Key; switch (tecla) { case ConsoleKey.RightArrow: case ConsoleKey.LeftArrow: index = 1 - index; break; case ConsoleKey.UpArrow: case ConsoleKey.DownArrow: Console.SetCursorPosition(coordenadaX, 1); break; case ConsoleKey.Enter: break; } for (int a = 0; a < 2; a++) { Console.SetCursorPosition(1 + (10 * a), 3); if (a == index) { Console.Write(">"); } else { Console.Write(" "); } } if (index == 0) // se pulsó Atrás { Atras(); //break; // vuelve a la edición de letras } if (index == 1) // se pulsó Guardar { Guardar(); } } } } } #endregion private static void Atras() { Console.Clear(); Console.SetCursorPosition(0, 1); Console.Write("HAS PULSADO ATRÁS "); Console.ReadKey(); // Pulse cualquier tecla para salir. } private static void Guardar() { Console.Clear(); Console.SetCursorPosition(0, 1); Console.Write("HAS GUARDADO "); for (int a = 0; a < roINDICE_ARRAY.Length; a++) { guardarNombre += roALFANUMERICO[roINDICE_ARRAY[a]].ToString(); } Console.SetCursorPosition(0, 2); Console.Write(guardarNombre); } } }
Un saludo.