Guardar en una variable un dato en memoria
Publicado por Meta (138 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í.
Saludos.
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


0