![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
|||
|
|||
|
Guardar en memoria el *
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í. Código:
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
}
}
}
__________________
http://electronica-pic.blogspot.com....n-arduino.html Manuales de electrónica general, PIC y Arduino. |
|
#2
|
||||
|
||||
|
No veo ningún campo que sirva para guardar qué opción está seleccionada (si es a eso a lo que te refieres con "*").
__________________
Proyectos actuales --> Allegro 5 Pascal ¡y Delphi! - BAScript - Multi Language Scriptable Development Environment |
|
#3
|
|||
|
|||
|
Buenas:
Ya está hecho. Dejo el código por si alguien lo necesita o como curiosidad a los visitantes. Código:
using System;
using System.IO;
namespace radioButton_consola_03_cs
{
class Program
{
#region Variables.
private static readonly string[] TEXTO = new string[]
{
"( ) Opción A ",
"( ) Opción B ",
"( ) Opción C ",
"( ) Opción D ",
"( ) Opción E ",
"( ) Opción F ",
"( ) Opción G ",
" 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 azul.
Console.BackgroundColor = ConsoleColor.Blue;
// Letras blanco.
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.
// 3 = Seleccionar con * la opción D.
// 4 = Seleccionar con * la opción E.
// 5 = Seleccionar con * la opción F.
// 6 = Seleccionar con * la opción G.
// Capturar tecla para luego validar.
ConsoleKey tecla;
// Cada vez que se vuelva al menú, está señalizado con el *.
itemSeñalado = 0;
int pagina;
// Crear archivo y guarda el * seleccioinado en él.
if (File.Exists("Archivo.txt"))
{
string data = File.ReadAllText("Archivo.txt");
itemSeleccionado = Convert.ToInt32(data);
//itemSeñalado = itemSeleccionado;
}
do
{
//******************************************************************
// Dibujo el menú principal.
// Limpiar pantalla.
Console.Clear();
pagina = 0;
if (itemSeñalado >= 4)
{
pagina = 4;
}
// Recorre la lista de las opciones.
for (int k = 0; k < 4; k++)
{
Console.SetCursorPosition(0, k);
Console.Write(itemSeñalado == k + pagina ? "> " : " ");
Console.Write(TEXTO[k + pagina]);
Console.SetCursorPosition(3, k);
Console.Write(itemSeleccionado == k + pagina ? "*" : " ");
}
// Fin de pintar el menú principal.
//******************************************************************
// Leer tecla ingresada por el usuario.
tecla = Console.ReadKey(true).Key;
switch (tecla)
{
// Al pulsar Enter, marcas un radioButton con *.
case ConsoleKey.Enter:
if (itemSeñalado < 7)
{
itemSeleccionado = itemSeñalado;
}
salir = (itemSeñalado == TEXTO.Length - 1);
// Si sales del programa, escribes en el archivo.
//if (salir == true)
// Si pulsa Enter, escribes en el archivo.
if (tecla == ConsoleKey.Enter)
{
File.WriteAllText("Archivo.txt", itemSeleccionado.ToString());
}
break;
// Pulsar flecha abajo del teclado.
case ConsoleKey.DownArrow:
if (++itemSeñalado >= TEXTO.Length)
{
itemSeñalado = 0;
Console.Clear();
}
else if (itemSeñalado == 4)
{
Console.Clear();
}
break;
// Pulsar flecha arriba del teclado.
case ConsoleKey.UpArrow:
if (--itemSeñalado < 0)
{
itemSeñalado = TEXTO.Length - 1;
Console.Clear();
}
else if (itemSeñalado == 3)
{
Console.Clear();
}
break;
}
// Uso la tecla escape como salida.
} while (!salir);
}
#endregion
}
}
__________________
http://electronica-pic.blogspot.com....n-arduino.html Manuales de electrónica general, PIC y Arduino. |
|
#4
|
||||
|
||||
![]() ![]() ![]()
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
![]() |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| Guardar y Leer fotos directamente a una base de datos sin antes guardar como archivo | rmeckbell | Desarrollo en Delphi para Android | 6 | 26-06-2017 18:24:20 |
| [RESUELTO] Guardar estructura de memoria (clases) a disco | Neftali [Germán.Estévez] | OOP | 27 | 09-03-2013 20:09:12 |
| DBGrid: Guardar y No guardar + Validar | juliannemiro | Varios | 2 | 06-01-2012 06:49:19 |
| Guardar cambios y no guardar ayuda!! | THACKER | Varios | 1 | 21-07-2008 17:49:52 |
|