FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Entrar en las opciones.
Hola:
Usando el modo consola de C# 2017. Hice un mini menú de opciones gracias a los compañeros de este foro. Puedo seleccionar con los botones arriba y abajo las opciones. Se usa formato de la pantalla 16x2. En este caso lo que hace es seleccionar opciones en el menú, pero no hace nada más. Las opciones en el menú se llama. Menú ▲▼ 1. UNO 2. DOS 3. TRES 4. CUATRO 5. ESC - SALIR Por ejemplo, seleccionamos el 3. TRES. Pulse Enter y justo una línea de abajo dice: 3. TRES ▲▼ Después de pulsar Enter, se sustituye el texto 3. TRES ▲▼ por otro abajo. Alum. ●●●●●●○○ En el cual podemos hacer cosas, estando ya en la subopción indicado arriba. Si pulsamos Enter, de Alum. ●●●●●●○○ vuelve al menú principal en este caso donde estaba, llamdo 3. TRES ▲▼. Si etás todavía en Alum. ●●●●●●○○, puedes pulsar la teclas arriba y abajo para mover las opciones indicadas de esta manera mostrada abajo. Son 8 puntos. Lo que hace es alumbrar el brillo de una luz, el brillo más débil es de esta manera. Alum. ○○○○○○○○. El brillo máximo es de otra manera, Alum. ●●●●●●●●. Con las flechas del teclado arriba y abajo, seleccionamos un punto, de 1 hasta 8. La mitad sería así: Alum. ●●●●○○○○. Pulsa enter, guarda la configuración en una variable para que la recuerde y sale al menú principal. Espero que se entienda lo que quiero hacer. Dejo el código base, solo selecciona opciones pero al pulsar Enter tiene que hacer al menos el 3. TRES. Código consola C#: Código:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Menu_consola_09_cs { class Program { static void Main(string[] args) { // Título de la ventana. Console.Title = "Menú de opciones"; // Tamaño ventana consola. // X anchura. Console.WindowWidth = 16; // Y altura. Console.WindowHeight = 2; // Oculto el cursor. Console.CursorVisible = false; // Contador de teclas y navegador. int contador = 0; // Capturar tecla para luego validar. ConsoleKey tecla; do { //****************************************************************** // Dibujo el menú. // Rellenar fondo verde. Console.BackgroundColor = ConsoleColor.Green; // Letras negras. Console.ForegroundColor = ConsoleColor.Black; // Limpiar pantalla. Console.Clear(); if (contador == 0) { Console.SetCursorPosition(0, 0); Console.Write("MENú ▲▼"); } if (contador == 1) { Console.SetCursorPosition(0, 0); Console.WriteLine("1. UNO"); } if (contador == 2) { Console.SetCursorPosition(0, 0); Console.WriteLine("2. DOS"); } if (contador == 3) { Console.SetCursorPosition(0, 0); Console.WriteLine("3. TRES"); } if (contador == 4) { Console.SetCursorPosition(0, 0); Console.WriteLine("4. CUATRO"); } if (contador == 5) { Console.SetCursorPosition(0, 0); Console.WriteLine("5. ESC = SALIR"); } // Fin de pintar el menú. //****************************************************************** // Leer tecla ingresada por el usuario. tecla = Console.ReadKey(true).Key; //validar el tipo de tecla if (tecla == ConsoleKey.DownArrow) { contador += 1; } if (tecla == ConsoleKey.UpArrow) { contador -= 1; } // Si está en la última opción, salta a la primera. if (contador > 5) { contador = 0; } // Si está en la primera posición, salta a la última. if (contador < 0) { contador = 5; } // Uso la tecla escape como salida. } while (tecla != ConsoleKey.Escape); } } } Una cosa a tener en cuenta. En vez de aparecer MENú ▲▼ En pantalla, lo primero que debe aparecer en el programa en HOLA. Si pulsas Enter, entonces ya aparece el Menú. Si pulsa salir apareces en HOLA. Luego hacer lo demás con el 3. TRES indicado arriba. ¿Alguna ayuda? Saludos.
__________________
http://electronica-pic.blogspot.com....n-arduino.html Manuales de electrónica general, PIC y Arduino. |
#2
|
|||
|
|||
Hola:
Por ahora he llegado hasta aquí y funciona. Código:
public static void brillo() { ConsoleKey teclaBrillo; Console.Clear(); do { Console.SetCursorPosition(0, 0); Console.Write("Luz: "); for (int i = 0; i < luz; i++) { Console.Write("X"); } for (int j = 0; j < (BRILLO_MAX - luz); j++) { Console.Write("-"); } teclaBrillo = Console.ReadKey(true).Key; // ¿Se pulsó el cursor arriba? if (teclaBrillo == ConsoleKey.UpArrow) { //¿no llega al limite? if (luz < BRILLO_MAX) { // Incrementa 1. luz++; } } if (teclaBrillo == ConsoleKey.DownArrow) { if (luz > 0) { // Decremmenta 1. luz--; } } } while (teclaBrillo != ConsoleKey.Enter); } Sigo con el resto de las opciones. Saludos.
__________________
http://electronica-pic.blogspot.com....n-arduino.html Manuales de electrónica general, PIC y Arduino. |
#3
|
||||
|
||||
Por si te sirve, aquí tienes tu código, simplificado:
Código:
public static void brillo() { Console.Clear(); while(true) { Console.SetCursorPosition(0, 0); Console.Write($"Luz: {new string('X', luz)}{new string('-', BRILLO_MAX - luz)}"); switch (Console.ReadKey(true).Key) { case ConsoleKey.UpArrow: if (luz < BRILLO_MAX) luz++; break; case ConsoleKey.DownArrow: if (luz > 0) luz--; break; case ConsoleKey.Enter: return; } } }
__________________
delphi.com.ar Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla. |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Para entrar en trance... | AzidRain | La Taberna | 4 | 06-03-2009 15:26:08 |
Evento al entrar al Form | lunygar | Varios | 5 | 11-01-2008 17:54:28 |
No me deja entrar xp a pc con win98 se ! | Arturo | Windows | 0 | 15-05-2006 22:46:43 |
No me deja entrar al Interbase | nuri | Firebird e Interbase | 2 | 14-07-2005 12:58:02 |
Cómo entrar a la disco | roman | Humor | 24 | 31-05-2004 19:34:56 |
|