Tutorial: Crear un control de usuario de Windows Forms que admita el enlace de datos de búsqueda

Cuando muestra 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 que no está disponible en los controles estándar. En este tutorial se muestra cómo crear un control que implementa LookupBindingPropertiesAttribute. Los controles que implementan LookupBindingPropertiesAttribute pueden contener tres propiedades que se pueden enlazar a los datos. Tales controles son similares a ComboBox.

Para obtener más información sobre la creación de controles, vea Desarrollar controles de formularios Windows Forms en tiempo de diseño.

Al crear controles para el uso en escenarios de enlace de datos, necesita implementar uno de los atributos de enlace de datos siguientes:

Uso de atributo de enlace de datos

Implemente el DefaultBindingPropertyAttribute en controles sencillos, como un TextBox, que muestra una única columna (o propiedad) de datos. Para obtener más información, vea Tutorial: Crear 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. Para obtener más información, vea Tutorial: Crear un control de usuario de Windows Forms que admita el enlace de datos complejo.

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. (Este proceso se describe en esta página del tutorial.)

Este tutorial crea un control de búsqueda que se enlaza a los datos de dos tablas. En este ejemplo se utilizan las tablas Customers y Orders de la base de datos de ejemplo Northwind. El control de búsqueda se enlazará al campo CustomerID de la tabla Orders. Utilizará este valor para buscar CompanyName en la tabla Customers.

Durante este tutorial aprenderá a:

  • Crear una nueva Aplicación de Windows Forms.

  • Agregue un nuevo Control de usuario a su proyecto.

  • Diseñe visualmente el control de usuario.

  • Implemente el atributo LookupBindingProperty.

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

  • Establezca la columna CustomerID de la tabla Orders en la ventana Orígenes de datos para utilizar el nuevo control.

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

Requisitos previos

Para poder completar este tutorial, necesitará:

Crear una aplicación para Windows

El primer paso es crear una Aplicación para Windows.

Para crear el nuevo proyecto de Windows

  1. En Visual Studio, en el menú Archivo cree un nuevo Proyecto.

  2. Dé al proyecto el nombre LookupControlWalkthrough.

  3. Seleccione Aplicación para Windows y haga clic en Aceptar. Para obtener más información, vea Crear aplicaciones basadas en Windows.

    El proyecto LookupControlWalkthrough se crea y se agrega al Explorador de soluciones.

Agregar un control de usuario al proyecto

Este tutorial crea un control de búsqueda a partir de un Control de usuario, por lo que debe agregar un elemento Control de usuario al proyecto LookupControlWalkthrough.

Para agregar un control de usuario al proyecto

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

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

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

Diseñar el control LookupBox

Para diseñar el control LookupBox

  • Arrastre un control ComboBox del Cuadro de herramientas hasta la superficie de diseño del control del usuario.

Agregar el atributo de enlace de datos requerido

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

Para implementar el atributo LookupBindingProperties

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

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

    <System.ComponentModel.LookupBindingProperties("DataSource", "DisplayMember", "ValueMember", "LookupMember")>
    Public Class LookupBox
    
        Public Property DataSource() As Object
            Get
                Return ComboBox1.DataSource
            End Get
            Set(ByVal value As Object)
                ComboBox1.DataSource = value
            End Set
        End Property
    
        Public Property DisplayMember() As String
            Get
                Return ComboBox1.DisplayMember
            End Get
            Set(ByVal value As String)
                ComboBox1.DisplayMember = value
            End Set
        End Property
    
        Public Property ValueMember() As String
            Get
                Return ComboBox1.ValueMember
            End Get
            Set(ByVal value As String)
                ComboBox1.ValueMember = value
            End Set
        End Property
    
        Public Property LookupMember() As String
            Get
                Return ComboBox1.SelectedValue.ToString()
            End Get
            Set(ByVal value As String)
                ComboBox1.SelectedValue = value
            End Set
        End Property
    End Class
    
    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();
            }
        }
    }
    
    Nota importanteImportante

    Si usa Visual C#, actualice el espacio de nombres para que coincida con el espacio de nombres de la aplicación. Si siguió las convenciones de nomenclatura de este procedimiento, ese espacio de nombres es LookupControlWalkthrough.

  3. En el menú Generar, elija Generar solución.

Crear un origen de datos de su base de datos

En este paso se crea un origen de datos utilizando 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. Debe tener acceso a la base de datos de ejemplo Northwind para crear la conexión. Para obtener información sobre la configuración de la base de datos de ejemplo Northwind, vea Cómo: Instalar bases de datos de ejemplo.

Para crear el origen de datos

  1. 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 la 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.

      O bien

    • Seleccione Nueva conexión para iniciar el cuadro de diálogo Agregar o modificar conexión. Para obtener más información, vea Agregar/Modificar conexión (Cuadro de diálogo, General).

  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 Elegir los objetos de base de datos.

  8. Seleccione las tablas Customers y Orders y, a continuación, haga clic en Finalizar.

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

Establecer la columna CustomerID de la tabla Orders para utilizar el control LookupBox

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

Para establecer la columna CustomerID para enlazarse al control LookupBox

  1. Abra Form1 en el diseñador.

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

  3. Expanda el nodo Orders (incluido en el nodo Customers debajo de la columna Fax).

  4. Haga clic en la flecha de lista desplegable en el nodo Orders y elija Detalles de la lista de control.

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

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

  7. Haga clic en Aceptar.

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

Agregar controles al formulario

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

Para crear controles enlazados en el formulario Windows Forms

  • Arrastre el nodo Orders de la ventana Orígenes de datos al formulario Windows Form y compruebe que se utiliza el control LookupBox para mostrar los datos de la columna CustomerID.

Enlazar el control para buscar CompanyName en la tabla Customers

Para configurar los enlaces de búsqueda

  • Seleccione el nodo Customers principal en la ventana Orígenes de datos y arrástrelo hacia el cuadro combinado del CustomerIDLookupBox en Form1.

    Así configura el enlace de datos para mostrar el valor CompanyName de la tabla Customers a la vez que mantiene el valor CustomerID de la tabla Orders. Para obtener más información, vea Cómo: Crear tablas de búsqueda en aplicaciones de Windows Forms.

Ejecutar la aplicación

Para ejecutar la aplicación

  • Presione F5 para ejecutar la aplicación.

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

Vea también

Tareas

Cómo: Establecer el control que se creará al arrastrar desde la ventana de orígenes de datos

Conceptos

Novedades en el desarrollo de aplicaciones de datos

Enlazar controles de Windows Forms a datos en Visual Studio

Enlazar controles a los datos en Visual Studio

Otros recursos

Conectarse a datos en Visual Studio

Preparar la aplicación para recibir datos

Buscar datos en la aplicación

Modificar datos en la aplicación

Validar datos

Guardar datos

Historial de cambios

Fecha

Historial

Motivo

Mayo de 2011

Se ha corregido el código de ejemplo.

Comentarios de los clientes.