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
FrmCarteleraque cargue en el atributorutaConfiguracionla ruta al archivoconfiguracion.jsonubicado en la carpeta que contiene los datos de aplicaciones (Environment.SpecialFolder.ApplicationData).Agregar un control de tipo
ColorDialogllamadocolorDialog.El manejador del evento
ClickdebtnColorPaneldeberá cargar la propiedadBackColordel controlpnlCartelcon el color elegido por el usuario.- Usar
colorDialogque deberá iniciar con el color actual depnlCartelcomo color seleccionado.
- Usar
El manejador del evento
ClickdebtnColorTitulodeberá cargar la propiedadForeColordel controllblTitulocon el color elegido por el usuario.- Usar
colorDialogque deberá iniciar con el color actual delblTitulocomo color seleccionado.
- Usar
El manejador del evento
ClickdebtnColorMensajedeberá cargar la propiedadForeColordel controllblMensajecon el color elegido por el usuario.- Usar
colorDialogque deberá iniciar con el color actual delblMensajecomo color seleccionado.
- Usar
El manejador del evento
Loaddel 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
JsonExceptioncon una ventana de alerta como la siguiente:
El manejador del evento
ClickdebtnGuardarConfiguraciondeberá:Instanciar y configurar un objeto de tipo
Cartelde 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
ClickdebtnImportarConfiguraciondeberá:- Pedirle al usuario que seleccione el archivo a importar usando
OpenFileDialog. La propiedadFilterdeberá 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
ClickdebtnEliminarConfiguraciondeberá: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 |
|---|