Hola:
Uso el lenguaje C# en modo consola. Solo se usan las flechas del teclado y Enter. Si pulsas flechas del teclado arriba o abajo escoges opciones A, B C señaladas con el >, si pulsas Enter, selecciona esa opción con una x. Solo se permite marcar una opción.
En la otra pantalla de abajo, si pulsas Enter en SALIR, el programa se termina.
Solo he hecho seleccionar las opciones con el >, pero no me funciona bien marcar las opciones con la x. También quiero guardar en un archivo de texto .txt la opción marcada, ya que al volver a ejecutar el programa, lea cual fue marcado.
Por ahora solo he hecho esto y anda más.
Se que es una forma de programar chapuza, al menos funciona algo. Solo falta programarla mejor y terminarlo.
Muchas gracias compañeros y que tengan buen día.
Uso el lenguaje C# en modo consola. Solo se usan las flechas del teclado y Enter. Si pulsas flechas del teclado arriba o abajo escoges opciones A, B C señaladas con el >, si pulsas Enter, selecciona esa opción con una x. Solo se permite marcar una opción.
En la otra pantalla de abajo, si pulsas Enter en SALIR, el programa se termina.
Solo he hecho seleccionar las opciones con el >, pero no me funciona bien marcar las opciones con la x. También quiero guardar en un archivo de texto .txt la opción marcada, ya que al volver a ejecutar el programa, lea cual fue marcado.
Por ahora solo he hecho esto y anda más.
C#:
using System;
namespace Pruebas_Opciones_Consola_01
{
internal class Program
{
static void Main(string[] args)
{
#region Configuración ventana.
// Título de la ventana.
Console.Title = "Opciones";
// Tamaño de la ventana, x, y o, ancho y alto.
const byte ancho = 20, alto = 5;
Console.SetWindowSize(ancho, alto);
// Quitar scroll laterales. Derecho y abajo.
Console.SetBufferSize(ancho, alto);
// Color de fondo.
Console.BackgroundColor = ConsoleColor.Black;
// Color de las letras.
Console.ForegroundColor = ConsoleColor.Gray;
// Limpiar pantalla y dejarlo todo en color de fondo.
Console.Clear();
// Visible el cursor. // No! Así lo haces invisible.
Console.CursorVisible = false;
#endregion
Menu();
void Menu()
{
sbyte indiceSeleccionado = 0; // Índice seleccionado de cada opción del menú.
bool salir = false; // Para salir del menú principal al INICIO.
sbyte SELECCION_OPCIONES_TOTALES = 3; // Total de opciones para seleccionar y fija.
// Capturar tecla para luego validar.
ConsoleKey tecla;
do
{
//******************************************************************
// Dibujo el menú principal.
switch (indiceSeleccionado)
{
case 0:
Console.SetCursorPosition(0, 0);
Console.Write(" ** TÍTULO ** ");
Console.SetCursorPosition(0, 1);
Console.Write("> ( ) Opción A ");
Console.SetCursorPosition(0, 2);
Console.Write(" ( ) Opción B ");
Console.SetCursorPosition(0, 3);
Console.Write(" ( ) Opción C ");
break;
case 1:
Console.SetCursorPosition(0, 0);
Console.Write(" ** TÍTULO ** ");
Console.SetCursorPosition(0, 1);
Console.Write(" ( ) Opción A ");
Console.SetCursorPosition(0, 2);
Console.Write("> ( ) Opción B ");
Console.SetCursorPosition(0, 3);
Console.Write(" ( ) Opción C ");
break;
case 2:
Console.SetCursorPosition(0, 0);
Console.Write(" ** TÍTULO ** ");
Console.SetCursorPosition(0, 1);
Console.Write(" ( ) Opción A ");
Console.SetCursorPosition(0, 2);
Console.Write(" ( ) Opción B ");
Console.SetCursorPosition(0, 3);
Console.Write("> ( ) Opción C ");
break;
case 3:
Console.SetCursorPosition(0, 0);
Console.Write(" ** TÍTULO ** ");
Console.SetCursorPosition(0, 1);
Console.Write("> SALIR ");
Console.SetCursorPosition(0, 2);
Console.Write(" ");
Console.SetCursorPosition(0, 3);
Console.Write(" ");
break;
default:
Console.Write("Fuera de rango. ");
break;
}
// Fin de pintar el menú principal.
//******************************************************************
// Leer tecla ingresada por el usuario.
tecla = Console.ReadKey(true).Key;
// Validar el tipo de tecla.
if (tecla == ConsoleKey.Enter)
{
switch (indiceSeleccionado)
{
case 0:
break;
case 1:
break;
case 2:
break;
case 3:
indiceSeleccionado = 0; // Restaurar índice antes de salir.
salir = true; // Salir
break;
default:
Console.Write("Fuera de rango. ");
break;
}
}
// ¿Has pulsado tecla flecha Abajo?
if (tecla == ConsoleKey.DownArrow)
{
indiceSeleccionado++;
}
// Entonces si pulsas tecla flecha Arriba.
if (tecla == ConsoleKey.UpArrow)
{
indiceSeleccionado--;
}
// Si está en la última opción, salta a la primera.
if (indiceSeleccionado > SELECCION_OPCIONES_TOTALES)
{
indiceSeleccionado = 0;
}
// Si está en la primera posición, salta a la última.
if (indiceSeleccionado < 0)
{
indiceSeleccionado = SELECCION_OPCIONES_TOTALES;
}
// Uso la tecla escape como salida.
} while (!salir);
}
}
}
}
Se que es una forma de programar chapuza, al menos funciona algo. Solo falta programarla mejor y terminarlo.
Muchas gracias compañeros y que tengan buen día.