El código base es este. Lo que no se es poner la X en las opciones y que se guarde en un archivo de texto.
using System;
namespace Pruebas_Opcioines_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;
// Limpiar pantalla.
Console.Clear();
do
{
//******************************************************************
// Dibujo el menú principal.
switch (indiceSeleccionado)
{
case 0:
Console.Write(" ** TÍTULO ** ");
Console.Write("> ( ) Opción A ");
Console.Write(" ( ) Opción B ");
Console.Write(" ( ) Opción C ");
break;
case 1:
Console.Write(" ** TÍTULO ** ");
Console.Write(" ( ) Opción A ");
Console.Write("> ( ) Opción B ");
Console.Write(" ( ) Opción C ");
break;
case 2:
Console.Write(" ** TÍTULO ** ");
Console.Write(" ( ) Opción A ");
Console.Write(" ( ) Opción B ");
Console.Write("> ( ) Opción C ");
break;
case 3:
Console.Write(" ** TÍTULO ** ");
Console.Write("> SALIR ");
Console.Write(" ");
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);
}
}
}
}