Seleccionar radioButton Consola

Metaconta 66 Puntos de reputación
2024-08-03T07:29:36.2733333+00:00

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í:

Opciones01

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.

Opciones02

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.

Sin supervisión
Sin supervisión
Etiqueta no supervisada por Microsoft.
213 preguntas
0 comentarios No hay comentarios
{count} votos

2 respuestas

Ordenar por: Muy útil
  1. Metaconta 66 Puntos de reputación
    2024-08-05T23:19:59.0066667+00:00

    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);
    
            }
    
        }
    
    }
    

    }

    0 comentarios No hay comentarios

  2. Deleted

    Esta respuesta se ha eliminado debido a una infracción del Código de Conducta. La respuesta se informó o identificó manualmente a través de la detección automatizada antes de que se realizara la acción. Consulte nuestro Código de Conducta para obtener más información.


    Los comentarios se han desactivado. Más información

Su respuesta

Las respuestas se pueden marcar como respuestas aceptadas por el autor de la pregunta, lo que ayuda a los usuarios a conocer la respuesta que resolvió el problema del autor.