Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
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 form 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 da por supuesto que está familiarizado con los temas siguientes:
- Conceptos de programación de Visual C#
- Visual C# .NET
Diseñar 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. En este artículo solo se describe un miembro. 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 en el á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 se puede manipular para iterar sobre los miembros de la matriz. Al agregar o restar de , 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 acomodar 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 siguiente código 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 load para agregar el
Form1_Loadevento al código.Agregue el código siguiente al evento
Form1_Load.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 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 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;Crear y ejecutar el proyecto.
Haga clic en los botones de comando para desplazarse entre las filas del control DataGrid.
Nota:
Si lo desea, puede editar los valores de los objetos.
Usar 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 descriptores de acceso de 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 ejecute de nuevo 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 en Formularios Windows Forms en la Ayuda en línea de Visual Studio .NET.