Saltar al pie de página
Iron Academy Logo
Aplicación C#
Aplicación C#

Otras categorías

Desarrollo de Aplicaciones C#: Un Análisis Más Profundo A Través de los "Crear Formulario de Equipo Parte 2" de Tim Corey (Lección 13)

Tim Corey
46m 06s

En este artículo, vamos a profundizar en el desarrollo de aplicaciones C# siguiendo la Lección 13 de Tim Corey de su serie "C# App Start to Finish". Tim nos guía a través del proceso de construir una aplicación funcional de Windows Forms, enfocándose en cómo conectar controles de UI como cuadros combinados, listas y botones con datos. Esta lección demuestra conceptos clave como la vinculación de datos, gestión de listas, conectividad con bases de datos usando Dapper, y validación y depuración básicas, todas habilidades esenciales para construir aplicaciones C# del mundo real.

Continuando el Formulario Crear Equipo

Tim comienza recordándonos que la Lección 13 es una continuación del video anterior, donde se conectó la sección "Agregar Nuevo Miembro". En esta lección, Tim explica que el objetivo principal es conectar el desplegable (cuadro combinado) y la lista, y luego conectar el objeto persona recién creado para que aparezca en la lista. Tim establece el plan claramente: esta lección se centrará en la conexión de UI, movimiento de datos y sincronización de listas, aspectos fundamentales para construir una aplicación de escritorio C#.

Comprendiendo los Datos del Cuadro Desplegable y la Lista

Tim explica que detrás del cuadro combinado y la lista habrá una lista de objetos Person. Este es un ejemplo clásico de vinculación de datos en Windows Forms, donde los elementos de UI están vinculados a colecciones de modelos de datos.

Él crea dos listas privadas a nivel de clase:

  • availableTeamMembers – las personas que pueden ser añadidas al equipo

  • selectedTeamMembers – las personas ya añadidas al equipo

Tim aclara el comportamiento esperado: cuando una persona es seleccionada del desplegable y añadida, deben moverse de availableTeamMembers a selectedTeamMembers. Este es un patrón estándar de operación CRUD en el desarrollo de aplicaciones de escritorio, donde la UI refleja los datos subyacentes.

Por Qué Tim No Limita los Miembros del Equipo por Torneo

Tim aborda una pregunta común de diseño: "¿Por qué no restringir los miembros del equipo basándose en el torneo?" Él explica que el formulario Crear Equipo no está directamente ligado a un torneo, y múltiples torneos podrían estar corriendo simultáneamente.

Tim usa un ejemplo práctico: si tanto un torneo de baloncesto como uno de ping-pong se llevan a cabo, una persona podría participar en ambos. Limitar el desplegable requeriría lógica compleja y podría introducir errores. En cambio, Tim elige un enfoque más simple:

  • Solo quitar a una persona del desplegable después de que sean añadidos a un equipo.

Este enfoque demuestra una decisión práctica de diseño de software: evitar complicaciones innecesarias a menos que sea necesario.

Creando el Método WireUpLists

Tim crea un método llamado WireUpLists para conectar las listas a los controles de UI. Este método vincula la lista availableTeamMembers al cuadro combinado y la lista selectedTeamMembers a la lista.

Tim señala una mejora clave: en los modernos Windows Forms, puedes vincular listas directamente a controles sin usar un BindingSource separado. Este es un consejo útil para los desarrolladores que trabajan en la vinculación de datos de Windows Forms.

Agregando DisplayMember con Nombre Completo

Tim explica que el cuadro combinado debe mostrar un nombre legible. La propiedad DisplayMember espera una propiedad de cadena del modelo Person. Tim advierte que usar solo FirstName o LastName puede causar duplicados.

Así que Tim crea una propiedad de solo lectura llamada FullName:

public string FullName
{
    get
    {
return $"{FirstName} {LastName}";
    }
}

Esto demuestra una práctica importante de UI: siempre asegúrese de que su UI muestre información amigable para el usuario, no datos de objeto sin procesar.

Creando Datos de Muestra para Pruebas

Tim crea un método llamado CreateSampleData para probar las listas y la UI. Él añade objetos de Persona de muestra a ambas listas y llama a WireUpLists en el constructor.

Esta es una técnica útil para construir y probar aplicaciones de Windows Forms rápidamente antes de conectarse a una base de datos real.

Reemplazando Datos de Muestra con Datos Reales

Tim comenta los datos de muestra y se prepara para cargar datos reales. Él añade un método GetPerson_All a la interfaz IDataConnection. Tim explica su convención de nombrado:

  • Crear = insertar

  • Obtener = seleccionar

Esta es una estrategia de nombrado estándar para capas de acceso a datos en aplicaciones C#.

Implementando Recuperación de Datos SQL Usando Dapper

Tim implementa la versión SQL de GetPerson_All usando Dapper y un procedimiento almacenado:

connection.Query<PersonModel>("spPeople_GetAll").ToList();

Tim usa intencionadamente una variable de salida en lugar de un retorno directo para facilitar la depuración. Esto demuestra cómo las prácticas de depuración pueden afectar el diseño del código.

Limpieza de Código Repetido con Constantes

Tim nota nombres repetidos de cadenas de conexión y los cambia a una constante. Él explica que la repetición es una mala práctica y puede causar errores más adelante.

Este es un principio importante de la ingeniería de software: DRY (No te repitas).

Cargando Datos Reales en el Desplegable

Tim crea LoadListData() y llena availableTeamMembers usando GetPerson_All(). La lista selectedTeamMembers permanece vacía, lo cual es correcto ya que un nuevo equipo comienza vacío.

Esto demuestra cómo conectar la UI a fuentes de datos reales, ya sea una base de datos o un archivo de texto.

Conectando el Botón Añadir Miembro

Tim crea el controlador de eventos del botón Añadir Miembro. La lógica es:

  1. Obtener la persona seleccionada del desplegable

  2. Elimínela de la lista disponible

  3. Añadirla a la lista seleccionada

  4. Refrescar la UI

Tim explica que el elemento seleccionado debe ser convertido a PersonModel porque el cuadro combinado almacena objetos como objeto. Esto resalta la importancia de la conversión de tipos y el manejo de objetos en C#.

Depurando el Problema de Refresco

Tim descubre que la UI no se refresca después de mover elementos. Después de depurar, encuentra la solución:

  • Establecer DataSource en null

  • Luego reasignar la lista

Esto fuerza al cuadro combinado y al cuadro de lista a refrescarse. Tim enfatiza que las habilidades de depuración son esenciales y a menudo necesarias para entender cómo se comporta el enlace de datos.

Conectando el Botón Eliminar Seleccionado

Tim cambia el nombre del botón a Eliminar Seleccionado y crea el controlador de eventos. Esto invierte la operación de añadir:

  • Eliminar de selectedTeamMembers

  • Añadir de vuelta a availableTeamMembers

  • Refrescar UI

Tim descubre un error: si no se selecciona ningún elemento, se añade un valor nulo. Él añade validación:

if (p != null)
{
    // continuar
}

Esto demuestra la validación básica y la prevención de errores.

La Importancia de Probar

Tim enfatiza en probar su aplicación como un usuario que intenta romperla. Él aconseja tener evaluadores que intencionalmente traten de romper la aplicación, porque los usuarios reales harán acciones inesperadas.

Esta es una lección clave para construir software confiable.

Conectando el Botón "Crear Miembro"

Tim modifica el botón "Crear Miembro" para guardar una nueva persona en el almacén de datos e inmediatamente añadirla a la lista seleccionada. Esto demuestra cómo implementar operaciones CRUD en una aplicación de Windows Forms.

Implementando GetPerson_All para Archivo de Texto

Tim se da cuenta de que falta la versión de archivo de texto de GetPerson_All. Él la implementa usando una línea simple:

return PeopleFile.FullFilePath.LoadFile().ConvertToPersonModels();

Esto muestra que el almacenamiento basado en archivos puede ser implementado fácilmente sin lógica compleja.

Confirmando que Todo Funciona

Tim ejecuta la aplicación y confirma que el desplegable ahora carga personas del archivo de texto y la base de datos. Él añade nuevas personas y las ve aparecer inmediatamente, mostrando que el sistema completo funciona correctamente.

¿Que sigue?

Tim concluye afirmando que el próximo video se centrará en crear el equipo en sí. Esto implica guardar múltiples piezas de datos en la base de datos o el archivo de texto, completando la función.

Reflexiones finales

La Lección 13 de Tim Corey es un ejemplo del mundo real del desarrollo de aplicaciones de C# Windows Forms. Desde la conexión de controles de UI y el enlace de datos hasta la depuración y validación, Tim enseña habilidades prácticas de programación para construir aplicaciones de escritorio reales. Esta lección es especialmente valiosa para desarrolladores que desean aprender sobre enlace de datos, Dapper, operaciones CRUD SQL y programación impulsada por UI en C#.

Si desea continuar aprendiendo, la próxima lección de Tim completará la función de creación de equipos y unirá todo en una aplicación funcional.

Hero Worlddot related to Desarrollo de Aplicaciones C#: Un Análisis Más Profundo A Través de los
Hero Affiliate related to Desarrollo de Aplicaciones C#: Un Análisis Más Profundo A Través de los

Gana más compartiendo lo que te gusta

¿Creas contenidos para desarrolladores que trabajan con .NET, C#, Java, Python o Node.js? ¡Convierte tu experiencia en un ingreso extra!

Equipo de soporte de Iron

Estamos disponibles online las 24 horas, 5 días a la semana.
Chat
Email
Llámame