Crear un control de usuario de Windows Forms de .NET Framework que admita el enlace de datos de búsqueda
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. Las tecnologías 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.
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 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. Para obtener más información, consulte Creación de 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 enlaza al campo CustomerID
de la tabla Orders
. Utiliza este valor para buscar CompanyName
en la tabla Customers
.
Durante este tutorial aprenderá a:
Cree una nueva Aplicación de Windows Forms (.NET Framework).
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 Pedidos 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 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.
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.
Siga estos pasos para instalar la base de datos de ejemplo Northwind:
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.
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.
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.
Crear un proyecto de aplicación de Windows Forms
El primer paso es crear un proyecto de aplicación de Windows Forms (.NET Framework).
En Visual Studio, en el menú Archivo, seleccione Nuevo>Proyecto.
Expanda Visual C# o Visual Basic en el panel de la izquierda y, a continuación, seleccione Escritorio de Windows.
En el panel central, seleccione el tipo de proyecto Aplicación de Windows Forms.
Denomine el proyecto LookupControlWalkthroughy y, después, haga clic en Aceptar.
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.
En el menú Proyecto, elija Agregar control de usuario.
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ño del control LookupBox
Para diseñar el control LookupBox, arrastre un ComboBox desde el Cuadro de herramientas a la superficie de diseño del control de usuario.
Adición del atributo de enlace de datos requerido
Para controles de búsqueda que admiten el enlace de datos, puede implementar LookupBindingPropertiesAttribute.
Cambie el control LookupBox a vista de código. (En el menú Ver, elija Código.)
Reemplace el código de
LookupBox
por 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(); } } }
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 utilizando el Asistente para configuración de orígenes de datos basado en las tablas Customers
y Orders
de la base de datos de ejemplo Northwind.
Para abrir la ventana Orígenes de datos, en el menú Datos, haga clic en Mostrar orígenes de datos.
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.
Seleccione Base de datos en la página Elegir un tipo de origen de datos y, a continuación, seleccione Siguiente.
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.
Si su base de datos requiere una contraseña, seleccione la opción para incluir datos confidenciales y seleccione Siguiente.
Haga clic en Siguiente en la página Guardar la cadena de conexión en el archivo de configuración de la aplicación.
Expanda el nodo Tablas en la página Elija los objetos de base de datos.
Seleccione las tablas
Customers
yOrders
y después seleccione Finalizar.NorthwindDataSet se agrega al proyecto y las tablas
Customers
yOrders
aparecen en la ventana Orígenes de datos.
Establecimiento de 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.
Abra Form1 en el diseñador.
Expanda el nodo Customers en la ventana Orígenes de datos.
Expanda el nodo Orders (incluido en el nodo Customers debajo de la columna Fax).
Haga clic en la flecha de lista desplegable en el nodo Orders y elija Detalles de la lista de control.
Haga clic en la flecha de lista desplegable en la columna CustomerID (del nodo Orders) y elija Personalizar.
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.
Haga clic en OK.
Haga clic en la flecha de lista desplegable en 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 al Form1.
Para crear controles enlazados en Windows Form, arrastre el nodo principal Órdenes desde la ventana Orígenes de datos a Windows Form y compruebe que se usa el control LookupBox para mostrar los datos de la columna CustomerID
.
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 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
.
Ejecución de la aplicación
Presione F5 para ejecutar la aplicación.
Navegue por algunos registros y compruebe que
CompanyName
aparece en el controlLookupBox
.