Compartir a través de


Creación de un control de usuario de Windows Forms de .NET Framework que admita enlaces de datos complejos con ADO.NET

Nota:

Los conjuntos de datos y las clases relacionadas son tecnologías heredadas de .NET Framework de principios de la década de 2000 que permiten a las aplicaciones trabajar con datos en memoria mientras están desconectadas de la base de datos. Son especialmente útiles para las aplicaciones que permiten a los usuarios modificar los datos y conservar los cambios en la base de datos. Aunque los conjuntos de datos han demostrado ser una tecnología de gran éxito, se recomienda que las nuevas aplicaciones de .NET usen Entity Framework Core. Entity Framework proporciona una manera más natural de trabajar con datos tabulares como modelos de objetos y tiene una interfaz de programación más sencilla.

Al mostrar datos en formularios en aplicaciones de Windows, puede elegir controles existentes en el Cuadro de herramientas. O bien, puede crear controles personalizados si la aplicación requiere funcionalidad que no está disponible en los controles estándar. En este tutorial se muestra cómo crear un control que implementa ComplexBindingPropertiesAttribute. Los controles que implementan ComplexBindingPropertiesAttribute contienen unas propiedades DataSource y DataMember que se pueden enlazar a datos. Tales controles son similares a DataGridView o ListBox.

Para más información sobre la creación de controles, consulte Desarrollo de controles de Windows Forms en tiempo de diseño.

Al crear controles para usarlos en escenarios de enlace de datos, es necesario implementar uno de los atributos de enlace de datos siguientes:

Uso de atributos de enlace de datos
Implemente el DefaultBindingPropertyAttribute en controles sencillos, como un TextBox, que muestra una única columna (o propiedad) de datos. Para más información, consulte Creación de un control de usuario de Windows Forms que admita el enlace de datos simple.
Implemente el ComplexBindingPropertiesAttribute en controles, como DataGridView, que muestra listas (o tablas) de datos. (Este proceso se describe en esta página del tutorial.)
Implemente el LookupBindingPropertiesAttribute en controles, como ComboBox, que muestren listas (o tablas) de datos, pero que también necesiten presentar una única columna o propiedad. Para más información, consulte Creación de un control de usuario de Windows Forms que admita el enlace de datos de búsqueda.

En este tutorial se crea un control complejo que muestra las filas de datos de una tabla. En este ejemplo se utiliza la tabla Customers de la base de datos de ejemplo Northwind. El control de usuario complejo mostrará la tabla de clientes en una DataGridView del control personalizado.

Durante este tutorial, aprenderá a:

  • Agregue un nuevo Control de usuario a su proyecto.

  • Diseñe visualmente el control de usuario.

  • Implemente el atributo ComplexBindingProperty.

  • Crear un conjunto de datos con el Asistente para configuración de orígenes de datos.

  • Establecer la tabla Clientes de la ventana Orígenes de datos para utilizar el nuevo control complejo.

  • Agregue el nuevo control arrastrándolo desde la ventana Orígenes de datos hasta Form1.

Requisitos previos

Para completar este tutorial, necesita que las cargas de trabajo de desarrollo de escritorio de .NET y de almacenamiento y procesamiento de datos estén instaladas en Visual Studio. Para instalarlas, abra el Instalador de Visual Studio y elija Modificar (o Más>modificar) junto a la versión de Visual Studio que desea modificar. Vea Modificación de Visual Studio.

En este tutorial se usa LocalDB de SQL Server Express y la base de datos de ejemplo Northwind.

  1. Si no tiene LocalDB de SQL Server Express, instálelo desde la página de descarga de SQL Server Express, o bien mediante el Instalador de Visual Studio. En el Instalador de Visual Studio, puede instalar LocalDB de SQL Server Express como parte de la carga de trabajo Almacenamiento y procesamiento de datos, o bien como un componente individual.

  2. Siga estos pasos para instalar la base de datos de ejemplo Northwind:

    1. En Visual Studio, abra la ventana Explorador de objetos de SQL Server (Explorador de objetos de SQL Server se instala como parte de la carga de trabajo Almacenamiento y procesamiento de datos en el Instalador de Visual Studio). Expanda el nodo SQL Server. Haga clic con el botón derecho en la instancia de LocalDB y seleccione Nueva consulta.

      Se abre una ventana del editor de consultas.

    2. Copie el script de Transact-SQL Northwind en el Portapapeles. Este script de T-SQL crea la base de datos Northwind desde cero y la rellena con datos.

    3. Pegue el script de T-SQL en el editor de consultas y, después, elija el botón Ejecutar.

      Después de un breve tiempo, la consulta termina de ejecutarse y se crea la base de datos Northwind.

Creación de un proyecto de aplicación de Windows Forms

El primer paso es crear un proyecto de Aplicación de Windows Forms para C# o Visual Basic. Asigne el nombre TutorialDeControlComplejo al proyecto.

Agregar un control de usuario al proyecto

Como en este tutorial se crea un control complejo enlazable a datos a partir de un elemento Control de usuario, agregue un elemento Control de usuario al proyecto:

  1. En el menú Proyecto, elija Agregar control de usuario.

  2. Escriba ComplexDataGridView en el área Nombre y haga clic en Agregar.

    El control ComplexDataGridView se agrega al Explorador de soluciones y se abre en el diseñador.

Diseño del control ComplexDataGridView

Para agregar un elemento DataGridView al control de usuario, arrastre un elemento DataGridView desde el Cuadro de herramientas a la superficie de diseño del control de usuario.

Adición del atributo de enlace de datos requerido

En el caso de los controles complejos que admiten enlaces a datos, puede implementar el ComplexBindingPropertiesAttribute:

  1. Cambie el control ComplexDataGridView a vista de código. En el menú Ver, seleccione Código.

  2. Reemplace el código de ComplexDataGridView por lo siguiente:

    using System.Windows.Forms;
    
    namespace CS
    {
        [System.ComponentModel.ComplexBindingProperties("DataSource", "DataMember")]
        public partial class ComplexDataGridView : UserControl
        {
            public object DataSource
            {
                get{ return dataGridView1.DataSource; }
                set{ dataGridView1.DataSource = value; }
            }
    
            public string DataMember
            {
                get{ return dataGridView1.DataMember; }
                set{ dataGridView1.DataMember = value; }
            }
    
            public ComplexDataGridView()
            {
                InitializeComponent();
            }
        }
    }
    
  3. En el menú Compilar , elija Compilar solución.

Creación de un origen de datos a partir de la base de datos

Use el Asistente para configuración de orígenes de datos para crear un origen de datos basado en la tabla Customers de la base de datos de ejemplo Northwind:

  1. Para abrir la ventana Orígenes de datos, haga clic en Mostrar orígenes de datos en el menú Datos.

  2. En la ventana Orígenes de datos, seleccione Agregar nuevo origen de datos para iniciar el Asistente para configuración de orígenes de datos.

  3. Seleccione Base de datos en la página Elegir un tipo de datos de origen y luego haga clic en Siguiente.

  4. En la página Elegir la conexión de datos realice una de las siguientes operaciones:

    • Si una conexión de datos a la base de datos de ejemplo Northwind está disponible en la lista desplegable, selecciónela.

    • Seleccione Nueva conexión para iniciar el cuadro de diálogo Agregar o modificar conexión.

  5. Si su base de datos requiere una contraseña, seleccione la opción para incluir datos confidenciales y haga clic en Siguiente.

  6. Haga clic en Siguiente en la página Guardar la cadena de conexión en el archivo de configuración de la aplicación.

  7. Expanda el nodo Tablas en la página Elija los objetos de base de datos.

  8. Seleccione la tabla Customers y después haga clic en Finalizar.

    NorthwindDataSet se agrega al proyecto y la tabla Customers aparece en la ventana Orígenes de datos.

Establecimiento de la tabla "Clientes" para usar el control ComplexDataGridView

Dentro de la ventana Orígenes de datos puede establecer el control que se va a crear antes de arrastrar elementos a un formulario:

  1. Abra Form1 en el diseñador.

  2. Expanda el nodo Customers en la ventana Orígenes de datos.

  3. Haga clic en la flecha de la lista desplegable en el nodo Customers y elija Personalizar.

  4. Seleccione ComplexDataGridView de la lista de Controles asociados en el cuadro de diálogo Opciones de personalización de la interfaz de usuario de datos.

  5. Haga clic en la flecha de la lista desplegable en la tabla Customers y elija ComplexDataGridView de la lista de controles.

Adición de controles al formulario

Puede crear los controles enlazados a datos arrastrando elementos desde la ventana Orígenes de datos al formulario. Arrastre el nodo Customers principal desde la ventana Orígenes de datos hasta el formulario. Compruebe que el control ComplexDataGridView se usa para mostrar los datos de la tabla.

Ejecución de la aplicación

Presione F5 para ejecutar la aplicación.

Pasos siguientes

En función de cuáles sean los requisitos de la aplicación, varios pasos se pueden realizar después de crear un control que admita el enlace a datos. Entre los pasos más habituales están los siguientes: