using System;
using System.IO;
namespace radioButton_consola_03_cs
{
class Program
{
#region Variables.
private static readonly string[] TEXTO
= new string[] {
"( ) Opción A ",
"( ) Opción B ",
"( ) Opción C ",
"( ) Opción D ",
"( ) Opción E ",
"( ) Opción F ",
"( ) Opción G ",
" SALIR"
};
private static int itemSeñalado;
private static int itemSeleccionado;
#endregion
static void Main(string[] args)
{
// Título de la ventana.
Console.Title = "RadioButton";
// Tamaño de la ventana.
Console.SetWindowSize(20, 5);
// Fondo azul.
Console.BackgroundColor = ConsoleColor.Blue;
// Letras blanco.
Console.ForegroundColor = ConsoleColor.White;
// Oculto el cursor.
Console.CursorVisible = false;
// Almacena la tecla pulsada en la variable.
ConsoleKey teclaInicial;
do
{
// Limpiar pantalla.
Console.Clear();
// Posición del cursor del título del MENÚ PRINCIPAL.
Console.SetCursorPosition(0, 0);
// Título.
Console.Write(" MENÚ PRINCIPAL ");
// Pocisión de la hora.
Console.SetCursorPosition(4, 2);
// Formato numérico dd/MM/yyyy.
Console.Write(DateTime.Now.ToString("ddd dd MMM"));
// Almacena en la variable una tecla pulsada.
teclaInicial = Console.ReadKey(true).Key;
// ¿Haz pulsado la tecla Enter?
if (teclaInicial == ConsoleKey.Enter)
{
// Sí. Se ejecuta esta función.
MenuPrincipal();
}
} while (teclaInicial != ConsoleKey.Escape);
}
#region Menú Principal.
private static void MenuPrincipal()
{
bool salir = false;
// En itemSelecionado:
// -1 = Sin seleccionar con * ninguna opción.
// 0 = Seleccionar con * la Opción A.
// 1 = Seleccionar con * la Opción B.
// 2 = Seleccionar con * la opción C.
// 3 = Seleccionar con * la opción D.
// 4 = Seleccionar con * la opción E.
// 5 = Seleccionar con * la opción F.
// 6 = Seleccionar con * la opción G.
// Capturar tecla para luego validar.
ConsoleKey tecla;
// Cada vez que se vuelva al menú, está señalizado con el *.
itemSeñalado = 0;
int pagina;
// Crear archivo y guarda el * seleccioinado en él.
if (File.Exists("Archivo.txt"))
{
string data = File.ReadAllText("Archivo.txt");
itemSeleccionado = Convert.ToInt32(data);
//itemSeñalado = itemSeleccionado;
}
do
{
//******************************************************************
// Dibujo el menú principal.
// Limpiar pantalla.
Console.Clear();
pagina = 0;
if (itemSeñalado >= 4)
{
pagina = 4;
}
// Recorre la lista de las opciones.
for (int k = 0; k < 4; k++)
{
Console.SetCursorPosition(0, k);
Console.Write(itemSeñalado == k + pagina ? "> " : " ");
Console.Write(TEXTO[k + pagina]);
Console.SetCursorPosition(3, k);
Console.Write(itemSeleccionado == k + pagina ? "*" : " ");
}
// Fin de pintar el menú principal.
//******************************************************************
// Leer tecla ingresada por el usuario.
tecla = Console.ReadKey(true).Key;
switch (tecla)
{
// Al pulsar Enter, marcas un radioButton con *.
case ConsoleKey.Enter:
if (itemSeñalado < 7)
{
itemSeleccionado = itemSeñalado;
}
salir = (itemSeñalado == TEXTO.Length - 1);
// Si sales del programa, escribes en el archivo.
//if (salir == true)
// Si pulsa Enter, escribes en el archivo.
if (tecla == ConsoleKey.Enter)
{
File.WriteAllText("Archivo.txt", itemSeleccionado.ToString());
}
break;
// Pulsar flecha abajo del teclado.
case ConsoleKey.DownArrow:
if (++itemSeñalado >= TEXTO.Length)
{
itemSeñalado = 0;
Console.Clear();
}
else if (itemSeñalado == 4)
{
Console.Clear();
}
break;
// Pulsar flecha arriba del teclado.
case ConsoleKey.UpArrow:
if (--itemSeñalado < 0)
{
itemSeñalado = TEXTO.Length - 1;
Console.Clear();
}
else if (itemSeñalado == 3)
{
Console.Clear();
}
break;
}
// Uso la tecla escape como salida.
} while (!salir);
}
#endregion
}
}