› Foros › Off-Topic › Miscelánea
// El menú principal que muestra nada más ejecutar el programa.
using System;
namespace LCD_Menu_con_submenus_Consola_03
{
internal class Program
{
static void Main(string[] args)
{
// Acceso a la ventana de inicio principal.
Inicio.InicioPrincipal();
}
}
}
// El menú principal que muestra nada más ejecutar el programa.
// ** MENÚ PRINCIPAL **
// > ESTADO PRINCIPAL
// NOMBRES RELÉS
// NOMBRES SENSORES
// -------------------
// ** MENÚ PRINCIPAL **
// ENTRADA ANALÓGICA
// CONFIGURACIÓN
// ACERCA DE...
// -------------------
// ** MENÚ PRINCIPAL **
// AYUDA
// EXTRA
// INICIO
using System;
namespace LCD_Menu_con_submenus_Consola_03
{
public class MenuPrincipal
{
// Variable global o estática.
public static int opcion = 0;
public static void Menu_Principal()
{
// Contador de teclas y navegador.
bool salir = false;
const int SELECCION_MENU = 8;
// Capturar tecla para luego validar.
ConsoleKey tecla;
// Limpiar pantalla.
Console.Clear();
do
{
//******************************************************************
// Dibujo el menú principal.
// Cursor invisible.
Console.CursorVisible = false;
string[] MENSAJES =
{
"** MENÚ PRINCIPAL **", // Posición 0.
" ESTADO PRINCIPAL ", // 1
" NOMBRE RELÉS ", // 2
" NOMBRE SENSORES ", // 3
" ENTRADA ANALÓGICA ", // 4
" CONFIGURACIÓN ", // 5
" ACERCA DE... ", // 6
" AYUDA ", // 7
" EXTRA ", // 8
" INICIO ", // 9
" ", // 10
">" // 11
};
switch (opcion)
{
case 0:
Console.SetCursorPosition(0, 0);
Console.Write(MENSAJES[0]); // ** MENÚ PRINCIPAL **
Console.SetCursorPosition(0, 1);
Console.Write(MENSAJES[1]); // > ESTADO PRINCIPAL
Console.SetCursorPosition(0, 1);
Console.Write(MENSAJES[11]); // >
Console.SetCursorPosition(0, 2);
Console.Write(MENSAJES[2]); // NOMBRE RELÉS
Console.SetCursorPosition(0, 3);
Console.Write(MENSAJES[3]); // NOMBRE SENSORES
break;
case 1:
Console.SetCursorPosition(0, 0);
Console.Write(MENSAJES[0]); // ** MENÚ PRINCIPAL **
Console.SetCursorPosition(0, 1);
Console.Write(MENSAJES[1]); // ESTADO PRINCIPAL
Console.SetCursorPosition(0, 2);
Console.Write(MENSAJES[2]); // > NOMBRE RELÉS
Console.SetCursorPosition(0, 2);
Console.Write(MENSAJES[11]); // >
Console.SetCursorPosition(0, 3);
Console.Write(MENSAJES[3]); // NOMBRE SENSORES
break;
case 2:
Console.SetCursorPosition(0, 0);
Console.Write(MENSAJES[0]); // ** MENÚ PRINCIPAL **
Console.SetCursorPosition(0, 1);
Console.Write(MENSAJES[1]); // ESTADO PRINCIPAL
Console.SetCursorPosition(0, 2);
Console.Write(MENSAJES[2]); // NOMBRE RELÉS
Console.SetCursorPosition(0, 3);
Console.Write(MENSAJES[3]); // > NOMBRE SENSORES
Console.SetCursorPosition(0, 3);
Console.Write(MENSAJES[11]); // >
break;
case 3:
Console.SetCursorPosition(0, 0);
Console.Write(MENSAJES[0]); // ** MENÚ PRINCIPAL **
Console.SetCursorPosition(0, 1);
Console.Write(MENSAJES[4]); // > ENTRADA ANALÓGICA
Console.SetCursorPosition(0, 1);
Console.Write(MENSAJES[11]); // >
Console.SetCursorPosition(0, 2);
Console.Write(MENSAJES[5]); // CONFIGURACIÓN
Console.SetCursorPosition(0, 3);
Console.Write(MENSAJES[6]); // ACERCA DE...
break;
case 4:
Console.SetCursorPosition(0, 0);
Console.Write(MENSAJES[0]); // ** MENÚ PRINCIPAL **
Console.SetCursorPosition(0, 1);
Console.Write(MENSAJES[4]); // ENTRADA ANALÓGICA
Console.SetCursorPosition(0, 2);
Console.Write(MENSAJES[5]); // > CONFIGURACIÓN
Console.SetCursorPosition(0, 2);
Console.Write(MENSAJES[11]); // >
Console.SetCursorPosition(0, 3);
Console.Write(MENSAJES[6]); // ACERCA DE...
break;
case 5:
Console.SetCursorPosition(0, 0);
Console.Write(MENSAJES[0]); // ** MENÚ PRINCIPAL **
Console.SetCursorPosition(0, 1);
Console.Write(MENSAJES[4]); // ENTRADA ANALÓGICA
Console.SetCursorPosition(0, 2);
Console.Write(MENSAJES[5]); // CONFIGURACIÓN
Console.SetCursorPosition(0, 3);
Console.Write(MENSAJES[6]); // > ACERCA DE...
Console.SetCursorPosition(0, 3);
Console.Write(MENSAJES[11]); // >
break;
case 6:
Console.SetCursorPosition(0, 0);
Console.Write(MENSAJES[0]); // ** MENÚ PRINCIPAL **
Console.SetCursorPosition(0, 1);
Console.Write(MENSAJES[7]); // > AYUDA
Console.SetCursorPosition(0, 1);
Console.Write(MENSAJES[11]); // >
Console.SetCursorPosition(0, 2);
Console.Write(MENSAJES[8]); // EXTRA
Console.SetCursorPosition(0, 3);
Console.Write(MENSAJES[9]); // INICIO
break;
case 7:
Console.SetCursorPosition(0, 0);
Console.Write(MENSAJES[0]); // ** MENÚ PRINCIPAL **
Console.SetCursorPosition(0, 1);
Console.Write(MENSAJES[7]); // AYUDA
Console.SetCursorPosition(0, 2);
Console.Write(MENSAJES[8]); // > EXTRA
Console.SetCursorPosition(0, 2);
Console.Write(MENSAJES[11]); // >
Console.SetCursorPosition(0, 3);
Console.Write(MENSAJES[9]); // INICIO
break;
case 8:
Console.SetCursorPosition(0, 0);
Console.Write(MENSAJES[0]); // ** MENÚ PRINCIPAL **
Console.SetCursorPosition(0, 1);
Console.Write(MENSAJES[7]); // AYUDA
Console.SetCursorPosition(0, 2);
Console.Write(MENSAJES[8]); // EXTRA
Console.SetCursorPosition(0, 3);
Console.Write(MENSAJES[9]); // > INICIO
Console.SetCursorPosition(0, 3);
Console.Write(MENSAJES[11]); // >
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 (opcion)
{
case 0:
EstadoPrincipal.Estado_Principal();
break;
case 1:
NombresReles.NombreReles_Principal();
break;
case 2:
NombreSensores.NombreSensores_Principal();
break;
case 3:
// Opcion();
break;
case 4:
//
break;
case 5:
//
break;
case 6:
//
break;
case 7:
//
break;
case 8:
salir = true;
//opcion = 0; // Vuelve al menú principal.
break;
default:
Console.Write("Fuera de rango. ");
break;
}
}
// ¿Has pulsado tecla flecha Abajo?
else if (tecla == ConsoleKey.DownArrow)
{
opcion++;
}
// Entonces si pulsas tecla flecha Arriba.
else if (tecla == ConsoleKey.UpArrow)
{
opcion--;
}
// Si está en la última opción, salta a la primera.
if (opcion > SELECCION_MENU)
{
opcion = 0;
}
// Si está en la primera posición, salta a la última.
if (opcion < 0)
{
opcion = SELECCION_MENU;
}
// Uso la tecla escape como salida.
} while (salir == false);
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace LCD_Menu_con_submenus_Consola_03
{
public class Inicio
{
public static void InicioPrincipal()
{
// Almacena la tecla pulsada en la variable.
ConsoleKey teclaInicial;
do
{
// Establece el ancho y alto de la ventana.
Console.SetWindowSize(20, 5);
// Limpiar pantalla.
Console.Clear();
// Posición del cursor del título del MENÚ PRINCIPAL.
Console.SetCursorPosition(0, 0);
// Título.
Console.Write(" INICIO ");
// Pocisión de la hora.
Console.SetCursorPosition(4, 2);
// Formato numérico dd/MM/yyyy.
Console.Write(DateTime.Now.ToString("ddd dd MMM"));
// Cursor invisible.
Console.CursorVisible = false;
// 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.Menu_Principal();
}
} while (teclaInicial != ConsoleKey.Escape);
// Menú principal.
// ---------------------------------------------------
// MenuPrincipal.Menu_Principal();
// NombresReles.NombreReles_Principal();
// EstadoPrincipal.Estado_Principal();
}
}
}
u1025425 escribió:Programar en algo que no sea inglés es delito de odio.
Dicho esto, en C# tienes un SetWindowPosition (o algo así) que te permite ubicar el "cursor" donde quieras, para luego escribir con Console Write/Writeline.
Con esto, y sabiendo capturar eventos de teclado, creo que la solución ya es casi trivial.
Saludos.