Crear un control de usuario de Windows Forms de .NET Framework que admita el enlace de datos de búsqueda

Nota:

La DataSet clase y las clases relacionadas son tecnologías heredadas de .NET Framework de principios de los años 2000 que permiten a las aplicaciones trabajar con datos en memoria mientras las aplicaciones están desconectadas de la base de datos. Las tecnologías son especialmente útiles para las aplicaciones que permiten a los usuarios modificar datos y conservar los cambios de nuevo en la base de datos. Aunque los conjuntos de datos son una tecnología probada de éxito, el enfoque recomendado para las nuevas aplicaciones .NET es usar 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 Windows Forms, puede elegir controles existentes en el Cuadro de herramientas o puede crear controles personalizados si la aplicación requiere funcionalidad no disponible en los controles estándar. En este tutorial se muestra cómo crear un control que implementeLookupBindingPropertiesAttribute. Los controles que implementan LookupBindingPropertiesAttribute pueden contener tres propiedades que se pueden enlazar a los datos. Estos controles son similares a un ComboBox.

Para obtener 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 su uso en escenarios de enlace de datos, debe implementar uno de los siguientes atributos de enlace de datos:

Uso de atributos de enlace de datos
Implemente el DefaultBindingPropertyAttribute en controles simples, como un TextBox, que muestran una sola columna (o propiedad) de datos. Para obtener más información, vea Crear un control de usuario de Windows Forms que admita el enlace de datos simple.
Implemente el ComplexBindingPropertiesAttribute en controles, como un DataGridView, que muestran listas (o tablas) de datos. Para obtener más información, vea Crear un control de usuario de Windows Forms que admita enlaces de datos complejos.
Implemente el LookupBindingPropertiesAttribute en controles, como un ComboBox, que muestran listas (o tablas) de datos, pero que también deben presentar una sola columna o propiedad. (Este proceso se describe en esta página de tutorial).

En esta guía práctica se crea un control de búsqueda que enlaza datos de dos tablas. En este ejemplo se usan las tablas Customers y Orders de la base de datos de ejemplo Northwind. El control de búsqueda está enlazado al CustomerID campo de la Orders tabla. Usa este valor para buscar el CompanyName desde la tabla Customers.

Durante este tutorial, aprenderá a:

  • Cree una nueva aplicación de Windows Forms (.NET Framework).

  • Agregue un nuevo control de usuario al proyecto.

  • Diseñe visualmente el control de usuario.

  • Implemente el LookupBindingProperty atributo .

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

  • Establezca la columna CustomerID en la tabla Pedidos, en la ventana Orígenes de datos, para usar el nuevo control.

  • Cree un formulario para mostrar los datos en el nuevo control.

Prerrequisitos

Para completar este tutorial, necesita las cargas de trabajo de desarrollo de escritorio de .NET y almacenamiento y procesamiento de datos instaladas en Visual Studio. Para instalarlos, abra el Visual Studio Installer 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 SQL Server Express LocalDB y la base de datos de ejemplo Northwind.

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

  2. Instale la base de datos de ejemplo Northwind siguiendo estos pasos:

    1. En Visual Studio, abra la ventana Explorador de objetos de SQL Server (El 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 Northwind Transact-SQL en su Portapapeles. Este script de T-SQL crea la base de datos Northwind desde cero y la rellena con datos.

    3. Pegue el script T-SQL en el editor de consultas y, a continuación, elija el botón Ejecutar.

      Después de un breve tiempo, la consulta finaliza la ejecución 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 (.NET Framework).

  1. En Visual Studio, en el menú Archivo , seleccione Nuevo>proyecto.

  2. Expanda Visual C# o Visual Basic en el panel izquierdo y, a continuación, seleccione Escritorio de Windows.

  3. En el panel central, seleccione el tipo de proyecto Aplicación de Windows Forms .

  4. Asigne al proyecto el nombre LookupControlWalkthrough y, a continuación, elija Aceptar.

    Se crea el proyecto LookupControlWalkthrough y se agrega al Explorador de soluciones.

Adición de un control de usuario al proyecto

En este tutorial se crea un control de búsqueda a partir de un control de usuario, por lo que se agrega un elemento Control de usuario al proyecto LookupControlWalkthrough .

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

  2. Escriba LookupBox en el área Nombre y, a continuación, seleccione Agregar.

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

Diseña el control LookupBox

Para diseñar el control LookupBox, arrastre un ComboBox elemento desde el Cuadro de herramientas a la superficie de diseño del control de usuario.

Adición del atributo de enlace de datos necesario

Para controles de búsqueda que admiten el enlace de datos, puede implementar LookupBindingPropertiesAttribute.

  1. Cambie el control LookupBox a la vista de código. (En el menú Ver , elija Código).

  2. Reemplace el código en LookupBox con lo siguiente:

    using System.Windows.Forms;
    
    namespace CS
    {
        [System.ComponentModel.LookupBindingProperties("DataSource", "DisplayMember", "ValueMember", "LookupMember")]
        public partial class LookupBox : UserControl
        {
            public object DataSource
            {
                get{ return comboBox1.DataSource; }
                set{ comboBox1.DataSource = value; }
            }
    
            public string DisplayMember
            {
                get{ return comboBox1.DisplayMember; }
                set{ comboBox1.DisplayMember = value; }
            }
    
            public string ValueMember
            {
                get{ return comboBox1.ValueMember; }
                set{ comboBox1.ValueMember = value; }
            }
    
            public string LookupMember
            {
                get{ return comboBox1.SelectedValue.ToString(); }
                set{ comboBox1.SelectedValue = value; }
            }
    
    
            public LookupBox()
            {
                InitializeComponent();
            }
        }
    }
    
  3. En el menú Compilar , elija Compilar solución.

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

En este paso se crea un origen de datos mediante el Asistente para la Configuración de Orígenes de Datos, basado en las tablas Customers y Orders de la base de datos de ejemplo Northwind.

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

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

  3. Seleccione Base de datos en la página Elegir un tipo de origen de datos y, a continuación, seleccione Siguiente.

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

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

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

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

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

  7. En la página Elegir los objetos de base de datos , expanda el nodo Tablas .

  8. Seleccione las Customers tablas y Orders y, a continuación, seleccione Finalizar.

    NorthwindDataSet se agrega al proyecto y las Customers tablas y Orders aparecen en la ventana Orígenes de datos.

Establezca la columna CustomerID de la tabla Orders para usar el control LookupBox.

En la ventana Orígenes de datos , puede establecer el control que se va a crear antes de arrastrar elementos al formulario.

  1. Abra Form1 en el diseñador.

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

  3. Expanda el nodo Pedidos (el del nodo Clientes debajo de la columna Fax ).

  4. Haga clic en la flecha de lista desplegable del nodo Pedidos y elija Detalles en la lista de controles.

  5. Haga clic en la flecha de lista desplegable de la columna CustomerID (en el nodo Pedidos ) y elija Personalizar.

  6. Seleccione lookupBox en la lista de controles asociados en el cuadro de diálogo Opciones de personalización de la interfaz de usuario de datos .

  7. Haz clic en Aceptar.

  8. Haga clic en la flecha de lista desplegable de la columna CustomerID y elija LookupBox.

Adición de controles al formulario

Puede crear los controles enlazados a datos arrastrando elementos desde la ventana Orígenes de datos a Form1.

Para crear controles enlazados a datos en Windows Forms, arrastre el nodo Pedidos desde la ventana Orígenes de datos a Windows Forms y compruebe que el control LookupBox se usa para mostrar los datos de la CustomerID columna.

Enlace del control para buscar CompanyName en la tabla Clientes

Para configurar los enlaces de búsqueda, seleccione el nodo Clientes principal en la ventana Orígenes de datos y arrástrelo al cuadro combinado del CustomerIDLookupBox en Form1.

Esto configura el enlace de datos para mostrar el CompanyName de la tabla Customers, al tiempo que mantiene el valor CustomerID de la tabla Orders.

Ejecutar la aplicación

  • Presione F5 para ejecutar la aplicación.

  • Navegue por algunos registros y compruebe que CompanyName aparece en el control LookupBox.