Buenas gente del foro:
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.
(https://www.subeimagenes.com/img/bbb-2113497.gif)
Una vez que haya elegido con el símbolo en > ATRÁS, si pulsa Enter muestra un mensaje:
Console.Write("HAS PULSADO ATRÁS ");
El programa en esta parte se acaba ahí.
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...
static string guardarNombre = "";
Muestra el mensaje: HAS GUARDADO y el nombre AAAAAAAAAAAAAAAA en pantalla.
Código completo en C#:
using System;
namespace LCD_nombre_archivo_consola_06
{
class Program
{
static string guardarNombre = "";
static int coordenadaX = 0;
static ConsoleKey key;
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','.', ',', '-', '_', ':', ';',
'¿', '?', '(', ')', '[', ']', '{', '}','=', '$','&', '"', ' '};
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.
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);
key = Console.ReadKey(true).Key;
switch (key)
{
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)
{
key = Console.ReadKey(true).Key;
switch (key)
{
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);
}
}
}
¿Alguna idea?
Un saludo.
Editado el primer post, que me olvidé de poner el código completo.