Elegir opciones raddioButton

Iniciado por Meta, Agosto 03, 2024, 04:42:37 AM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Agosto 03, 2024, 04:42:37 AM Ultima modificación: Agosto 03, 2024, 05:18:06 PM por AXCESS
Buenos días programadores:Quiero hacer un programa en consola con C# usando como si estuviera con radioButton, hay tres opciones y se selecciona con el >, al pulsar Enter, se marca por ejemplo así, (x) Opción B.

Solo se puede controlar la consola con las flechas del teclado, y Enter.

En la primera ventana se muestra así:



Como muestra en la imagen de arriba, está seleccionado con > en este caso la ( ) Opción A, con las flechas de arriba y abajo escoges la opción que quieras y solo se queda una opción marcada con una x. No puede haber varios seleccionado en un radioButton, solo uno. Una vez elegida una opción, se marca o desmarca pulsando la tecla Enter.

Si sigues indicando con la flecha del teclado, llega a la otra opción SALIR como indica abajo y pulsas Enter, simplemente sales del programa.



A parte de todo esto, la información o las opciones queda guardada en un archivo de texto, si no existe, lo crea al lado del ejecutable, si existe, solo lee la información al volver a ejecutar el programa.

¿Cómo se hace?

Saludos.

Agosto 06, 2024, 02:11:27 AM #1 Ultima modificación: Agosto 06, 2024, 12:52:50 PM por Meta
Solo me falta poner una x en sus opciones, por ahora solo he hecho este código.
También quiero lograr que el radioButton marcado se guarde en un archivo .txt, al ejecutar el programa, lea el último valor guardado.

Código: text
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.

                bool opcionA = true;
                bool opcionB = false;
                bool opcionC = false;

                // 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      ");
                            if ((opcionA == true) && (opcionB == false) && (opcionC == false))
                            {
                                Console.SetCursorPosition(3, 1);
                                Console.Write("x");
                                Console.SetCursorPosition(3, 2);
                                Console.Write(" ");
                                Console.SetCursorPosition(3, 3);
                                Console.Write(" ");
                            }
                            else
                            {
                                Console.SetCursorPosition(3, 1);
                                Console.Write(" ");
                            }
                            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      ");
                            if (opcionA == false && opcionB == true && opcionC == false)
                            {
                                Console.SetCursorPosition(3, 1);
                                Console.Write(" ");
                                Console.SetCursorPosition(3, 2);
                                Console.Write("x");
                                Console.SetCursorPosition(3, 3);
                                Console.Write(" ");
                            }
                            else
                            {
                                Console.SetCursorPosition(3, 2);
                                Console.Write(" ");
                            }
                            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      ");
                            if (opcionA == false && opcionB == false && opcionC == true)
                            {
                                Console.SetCursorPosition(3, 1);
                                Console.Write(" ");
                                Console.SetCursorPosition(3, 2);
                                Console.Write(" ");
                                Console.SetCursorPosition(3, 3);
                                Console.Write("x");
                            }
                            else
                            {
                                Console.SetCursorPosition(3, 3);
                                Console.Write(" ");
                            }
                            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:
                                opcionA = true;
                                opcionB = false;
                                opcionC = false;
                                break;

                            case 1:
                                opcionA = false;
                                opcionB = true;
                                opcionC = false;
                                break;

                            case 2:
                                opcionA = false;
                                opcionB = false;
                                opcionC = true;
                                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);
            }
        }
    }
}