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 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 a la Designer Formulario.
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 Designer Formulario, 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_Load
evento al código.Agregue el código siguiente al
Form1_Load
evento.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 Designer Formulario.
Haga doble clic en Siguiente y, a continuación, agregue el código siguiente al
button1_Click
evento.currencyManager.Position++;
Haga doble clic en Anterior y agregue el código siguiente al
button2_Click
evento.currencyManager.Position--;
Haga doble clic en Primero y, a continuación, agregue el código siguiente al
button3_Click
evento.currencyManager.Position = 0;
Haga doble clic en Last (Último) y agregue el código siguiente al
button4_Click
evento.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 guitar
en el ejemplo siguiente:
public struct guitar
Comente 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 Visual Studio .NET Online.
Comentarios
https://aka.ms/ContentUserFeedback.
Próximamente: A lo largo de 2024 iremos eliminando gradualmente GitHub Issues como mecanismo de comentarios sobre el contenido y lo sustituiremos por un nuevo sistema de comentarios. Para más información, vea:Enviar y ver comentarios de