Uso de Visual C# para enlazar un control DataGrid a una matriz de objetos o de estructuras
En este artículo se proporciona información sobre cómo enlazar una matriz de objetos a un control DataGrid.
Versión original del producto: Visual C #
Número de KB original: 315786
Resumen
El ejemplo de este artículo consta de un formulario de Windows con un control DataGrid para mostrar valores de propiedad de objeto y cuatro botones de comando para examinar las filas del control DataGrid.
Requisitos
En este artículo se supone que está familiarizado con los temas siguientes:
- Conceptos de programación de Visual C#
- Visual C# .NET
Diseño de la clase
Una clase que se va a enlazar a un control debe tener descriptores de acceso de propiedad. Cualquier propiedad que se va a enlazar debe tener el método property Set y el método property Get . La clase de ejemplo que se usa en este artículo tiene tres miembros. Solo se describe un miembro en este artículo. También se ha proporcionado un constructor con parámetros. Sin embargo, no es un requisito.
public class guitar
{
private string make;
private string model;
private short year;
public guitar()
{
}
public guitar(string make, string model, short year)
{
Make=make;
Model=model;
Year=year;
}
public string Make
{
get
{
return make;
}
set
{
make = value;
}
}
}
Adición de instancias de clase a una matriz
Para crear instancias y agregarlas a la matriz, siga estos pasos:
Declare una matriz.
Cree instancias de la clase y agregue las instancias a la matriz.
private guitar[] arr=new guitar[3]; arr[0] = new guitar("Gibson", "Les Paul", 1958); arr[1] = new guitar("Fender", "Jazz Bass", 1964); arr[2] = new guitar("Guild", "Bluesbird", 1971);
Enlace de la matriz al control DataGrid
Una vez rellenada la matriz, establezca la propiedad DataSource del control DataGrid en la matriz. Las columnas del control DataGrid se rellenan en función de las propiedades para las que existen descriptores de acceso de propiedad dentro del ámbito.
dataGrid1.DataSource=arr;
Proporcionar un medio para examinar la matriz
Puede usar CurrencyManager para examinar la matriz. Para ello, asocie CurrencyManager con el BindingContext del control, en este caso, la matriz.
private CurrencyManager currencyManager=null;
currencyManager = (CurrencyManager)dataGrid1.BindingContext[arr];
La CurrencyManager clase tiene una Position propiedad que puede manipular para recorrer en iteración los miembros de la matriz. Si agrega o resta el valor actual de Position, puede examinar las filas del DataGrid control.
//Move forward one element.
currencyManager.Position++;
//Move back one element.
currencyManager.Position--;
//Move to the beginning.
currencyManager.Position = 0;
//Move to the end.
currencyManager.Position = arr.Length - 1;
Ejemplo paso a paso
En Visual C# .NET, cree un nuevo proyecto de aplicación de Windows. Form1 se crea de forma predeterminada.
Agregue una clase al proyecto.
Reemplace el código de Class1.cs por el código siguiente.
public class guitar { private string make; private string model; private short year; public guitar() { } public guitar(string Make, string Model, short Year) { make=Make; model=Model; year=Year; } public string Make { get { return make; } set { make = value; } } public string Model { get { return model; } set { model = value; } } public short Year { get { return year; } set { year = value; } } }Cierre la ventana de código Class1.cs y cambie al Diseñador de formularios.
Agregue un control DataGrid a Form1. Ajuste el tamaño del control DataGrid para dar cabida a cuatro columnas y tres filas.
Agregue cuatro controles Button a Form1 y, a continuación, organice los botones horizontalmente.
Cambie la propiedad Text de Button1 a Siguiente.
Cambie la propiedad Text de Button2 a Anterior.
Cambie la propiedad Text de Button3 a First.
Cambie la propiedad Text de Button4 a Last.
Agregue el código siguiente a la clase
Form1.private guitar[] arr=new guitar[3]; private CurrencyManager currencyManager=null;Cambie al Diseñador de formularios, haga clic con el botón derecho en el formulario y, a continuación, haga clic en Propiedades.
Haga clic en el icono Eventos y, a continuación, haga doble clic en el evento de carga para agregar el
Form1_Loadevento al código.Agregue el código siguiente al
Form1_Loadevento.arr[0] = new guitar("Gibson", "Les Paul", 1958); arr[1] = new guitar("Fender", "Jazz Bass", 1964); arr[2] = new guitar("Guild", "Bluesbird", 1971); currencyManager = (CurrencyManager)dataGrid1.BindingContext[arr]; dataGrid1.DataSource=arr;Cambie para ver el Diseñador de formularios.
Haga doble clic en Siguiente y, a continuación, agregue el código siguiente al
button1_Clickevento.currencyManager.Position++;Haga doble clic en Anterior y agregue el código siguiente al
button2_Clickevento.currencyManager.Position--;Haga doble clic en Primero y, a continuación, agregue el código siguiente al
button3_Clickevento.currencyManager.Position = 0;Haga doble clic en Last (Último) y agregue el código siguiente al
button4_Clickevento.currencyManager.Position = arr.Length - 1;Compile y ejecute el proyecto.
Haga clic en los botones de comando para moverse entre las filas del control DataGrid.
Nota
Puede editar los valores de los objetos si lo desea.
Uso de una estructura en lugar de una clase
Las reglas para enlazar una estructura son las mismas que las reglas para enlazar un objeto. Se requiere la propiedad que es descriptor de acceso miembro. Una estructura que se crea para este propósito es similar a una clase.
Para enlazar a una matriz de estructuras, siga estos pasos.
Cambie la definición del módulo de clase Class1.cs en el ejemplo de
public class guitaren el ejemplo siguiente:
public struct guitarComente el constructor predeterminado, como se indica a continuación.
//public guitar() //{ //}Compile y vuelva a ejecutar el programa de ejemplo y compruebe que funciona con una matriz de estructuras.
Referencias
Para obtener más información, vea el tema Consumidores de datos sobre Windows Forms en la Ayuda de .NET Online de Visual Studio.