C sharp - Guardar en una variable un dato en memoria

 
Vista:
sin imagen de perfil
Val: 121
Bronce
Ha aumentado 1 puesto en C sharp (en relación al último mes)
Gráfica de C sharp

Guardar en una variable un dato en memoria

Publicado por Meta (67 intervenciones) el 13/06/2020 15:39:13
Hola:

Aquí un programa hecho en consola, solo se usa las flechas del teclado y Enter.

Este programa se basa en radioButton, que en este caso funciona si selecciona una opción y pulsas Enter, se pone un asterisco. Hasta ahí bien.

Al pulsar Salir, luego Entrar, no se queda guardado el * en el último radioButton seleccionado.

¿Cómo se hace?

El código que tengo por ahora lo dejo aquí.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
using System;
 
namespace radioButton_consola_02_cs
{
    class Program
    {
        #region Variables.
        private static readonly string[] TEXTO = new string[]
        {
            "( ) Opción A        ",
            "( ) Opción B        ",
            "( ) Opción C        ",
            "    SALIR"
        };
        #endregion
 
        static void Main(string[] args)
        {
            // Tamaño de la ventana.
            Console.SetWindowSize(20, 5);
 
            // Fondo verde.
            Console.BackgroundColor = ConsoleColor.Blue;
 
            // Letras negras.
            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.
            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.
                int itemSeleccionado = 0;
                int itemSeñalado = 0;
 
                // Capturar tecla para luego validar.
                ConsoleKey tecla;
 
                do
                {
                    //******************************************************************
                    // Dibujo el menú principal.
 
                    // Rellenar fondo verde.
                    //Console.BackgroundColor = ConsoleColor.Green;
 
                    // Letras negras.
                    //Console.ForegroundColor = ConsoleColor.Black;
 
                    // Limpiar pantalla.
                    Console.Clear();
 
                    for (int k = 0; k < TEXTO.Length; k++)
                    {
                        Console.SetCursorPosition(0, k);
                        Console.Write(itemSeñalado == k ? "> " : "  ");
                        Console.Write(TEXTO[k]);
                        Console.SetCursorPosition(3, k);
                        Console.Write(itemSeleccionado == k ? "*" : " ");
                    }
 
                    // Fin de pintar el menú principal.
                    //******************************************************************
 
                    // Leer tecla ingresada por el usuario.
                    tecla = Console.ReadKey(true).Key;
 
                    switch (tecla)
                    {
                        case ConsoleKey.Enter:
                            itemSeleccionado = itemSeñalado;
                            salir = (itemSeleccionado == TEXTO.Length - 1);
                            break;
 
                        case ConsoleKey.DownArrow:
                            if (++itemSeñalado >= TEXTO.Length)
                            {
                                itemSeñalado = 0;
                            }
                            break;
 
                        case ConsoleKey.UpArrow:
                            if (--itemSeñalado < 0)
                            {
                                itemSeñalado = TEXTO.Length - 1;
                            }
                            break;
                    }
                    // Uso la tecla escape como salida.
                } while (!salir);
            }
            #endregion
        }
    }
}

Saludos.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Wilfredo Patricio Castillo
Val: 882
Oro
Ha mantenido su posición en C sharp (en relación al último mes)
Gráfica de C sharp

Guardar en una variable un dato en memoria

Publicado por Wilfredo Patricio Castillo (413 intervenciones) el 15/06/2020 16:34:26
¿Cómo se hace?.

Pues almacenando en algún archivo de configuración, para que al volver a cargar lo lea desde alli, caso contrario no hay modo.

Saludos cordiales,
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 121
Bronce
Ha aumentado 1 puesto en C sharp (en relación al último mes)
Gráfica de C sharp

Guardar en una variable un dato en memoria

Publicado por Meta (67 intervenciones) el 16/06/2020 22:31:21
Ya me salió.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
using System;
 
namespace radioButton_consola_02_cs
{
    class Program
    {
        #region Variables.
        private static readonly string[] TEXTO = new string[]
        {
            "( ) Opción A        ",
            "( ) Opción B        ",
            "( ) Opción C        ",
            "    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 verde.
            Console.BackgroundColor = ConsoleColor.Blue;
 
            // Letras negras.
            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.
 
            // Capturar tecla para luego validar.
            ConsoleKey tecla;
 
            // Cada vez que se vuelva al menú, está señalizado con el *.
            itemSeñalado = 0;
 
            do
            {
                //******************************************************************
                // Dibujo el menú principal.
 
                // Limpiar pantalla.
                Console.Clear();
 
                for (int k = 0; k < TEXTO.Length; k++)
                {
                    Console.SetCursorPosition(0, k);
                    Console.Write(itemSeñalado == k ? "> " : "  ");
                    Console.Write(TEXTO[k]);
                    Console.SetCursorPosition(3, k);
                    Console.Write(itemSeleccionado == k ? "*" : " ");
                }
 
                // Fin de pintar el menú principal.
                //******************************************************************
 
                // Leer tecla ingresada por el usuario.
                tecla = Console.ReadKey(true).Key;
 
                switch (tecla)
                {
                    case ConsoleKey.Enter:
                        if (itemSeñalado < 3)
                        {
                            itemSeleccionado = itemSeñalado;
                        }
                        salir = (itemSeñalado == TEXTO.Length - 1);
                        break;
 
                    case ConsoleKey.DownArrow:
                        if (++itemSeñalado >= TEXTO.Length)
                        {
                            itemSeñalado = 0;
                        }
                        break;
 
                    case ConsoleKey.UpArrow:
                        if (--itemSeñalado < 0)
                        {
                            itemSeñalado = TEXTO.Length - 1;
                        }
                        break;
                }
                // Uso la tecla escape como salida.
            } while (!salir);
        }
        #endregion
    }
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar