Ejercicio I02 - Cartelera
Consigna
Tenemos una aplicación que diseña una cartelera con un título y un mensaje. Se deberá persistir la configuración de la cartelera (colores de panel, título y mensaje) en formato JSON para que no se pierda al cerrar la aplicación.
Descargar la cáscara del proyecto y seguir los siguientes pasos:
Crear un constructor estático en el
FrmCartelera
que cargue en el atributorutaConfiguracion
la ruta al archivoconfiguracion.json
ubicado en la carpeta que contiene los datos de aplicaciones (Environment.SpecialFolder.ApplicationData
).Agregar un control de tipo
ColorDialog
llamadocolorDialog
.El manejador del evento
Click
debtnColorPanel
deberá cargar la propiedadBackColor
del controlpnlCartel
con el color elegido por el usuario.- Usar
colorDialog
que deberá iniciar con el color actual depnlCartel
como color seleccionado.
- Usar
El manejador del evento
Click
debtnColorTitulo
deberá cargar la propiedadForeColor
del controllblTitulo
con el color elegido por el usuario.- Usar
colorDialog
que deberá iniciar con el color actual delblTitulo
como color seleccionado.
- Usar
El manejador del evento
Click
debtnColorMensaje
deberá cargar la propiedadForeColor
del controllblMensaje
con el color elegido por el usuario.- Usar
colorDialog
que deberá iniciar con el color actual delblMensaje
como color seleccionado.
- Usar
El manejador del evento
Load
del formulario deberá recuperar la configuración almacenada de la siguiente forma:Leer el archivo referenciado por
rutaConfiguracion
. Si no existe, no hacer nada.Deserializar el contenido del archivo desde formato JSON a un objeto de tipo
Cartel
.Ejecutar el siguiente código:
pnlCartel.BackColor = Color.FromArgb(cartel.ColorARGB);
txtTitulo.Text = cartel.Titulo.Contenido;
lblTitulo.ForeColor = Color.FromArgb(cartel.Titulo.ColorARGB);
rtxtMensaje.Text = cartel.Mensaje.Contenido;
lblMensaje.ForeColor = Color.FromArgb(cartel.Mensaje.ColorARGB);Manejar las excepciones de tipo
JsonException
con una ventana de alerta como la siguiente:
El manejador del evento
Click
debtnGuardarConfiguracion
deberá:Instanciar y configurar un objeto de tipo
Cartel
de la siguiente forma:Texto titulo = new Texto(lblTitulo.Text, lblTitulo.ForeColor.ToArgb());
Texto mensaje = new Texto(lblMensaje.Text, lblMensaje.ForeColor.ToArgb());
Cartel cartel = new Cartel(pnlCartel.BackColor.ToArgb(), titulo, mensaje);Serializar dicho objeto a formato JSON.
Almacenar el objeto serializado en la ubicación indicada por el atributo
rutaConfiguracion
.
El manejador del evento
Click
debtnImportarConfiguracion
deberá:- Pedirle al usuario que seleccione el archivo a importar usando
OpenFileDialog
. La propiedadFilter
deberá estar configurada como "Json files(.json)|.json" antes de abrir la ventana de diálogo. - Para importar la configuración desde el archivo, seguir la misma lógica usada en el manejador del evento
Load
. - Probar la funcionalidad con el siguiente archivo: configuracion-cartelera.json
- Pedirle al usuario que seleccione el archivo a importar usando
El manejador del evento
Click
debtnEliminarConfiguracion
deberá:Mostrar un cartel de confirmación preguntando al usuario si está seguro de que desea eliminar la configuración. Si la respuesta es afirmativa seguir con los siguientes puntos, caso contrario no hacer nada.
Eliminar el archivo de configuración, si existe.
Ejecutar el siguiente código:
txtTitulo.Text = "Título";
lblTitulo.ForeColor = Control.DefaultForeColor;
rtxtMensaje.Text = "Mensaje";
lblMensaje.ForeColor = Control.DefaultForeColor;
pnlCartel.BackColor = Control.DefaultBackColor;
IMPORTANTE
Cualquier excepción deberá ser manejada mostrando un MessageBox
con el mensaje y el stack trace.
Reutilizar código en todo el proyecto siguiendo el principio DRY.
Resolución
Video | Código |
---|