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:

  1. Declare una matriz.

  2. 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

  1. En Visual C# .NET, cree un nuevo proyecto de aplicación de Windows. Form1 se crea de forma predeterminada.

  2. Agregue una clase al proyecto.

  3. 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;
            }
        }
    }
    
  4. Cierre la ventana de código Class1.cs y cambie a la Designer Formulario.

  5. Agregue un control DataGrid a Form1. Ajuste el tamaño del control DataGrid para dar cabida a cuatro columnas y tres filas.

  6. Agregue cuatro controles Button a Form1 y, a continuación, organice los botones horizontalmente.

  7. Cambie la propiedad Text de Button1 a Siguiente.

  8. Cambie la propiedad Text de Button2 a Anterior.

  9. Cambie la propiedad Text de Button3 a First.

  10. Cambie la propiedad Text de Button4 a Last.

  11. Agregue el código siguiente a la clase Form1.

    private guitar[] arr=new guitar[3];
    private CurrencyManager currencyManager=null;
    
  12. Cambie al Designer Formulario, haga clic con el botón derecho en el formulario y, a continuación, haga clic en Propiedades.

  13. 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.

  14. 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;
    
  15. Cambie para ver el Designer Formulario.

  16. Haga doble clic en Siguiente y, a continuación, agregue el código siguiente al button1_Click evento.

    currencyManager.Position++;
    
  17. Haga doble clic en Anterior y agregue el código siguiente al button2_Click evento.

    currencyManager.Position--;
    
  18. Haga doble clic en Primero y, a continuación, agregue el código siguiente al button3_Click evento.

    currencyManager.Position = 0;
    
  19. Haga doble clic en Last (Último) y agregue el código siguiente al button4_Click evento.

    currencyManager.Position = arr.Length - 1;
    
  20. Compile y ejecute el proyecto.

  21. 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.

  1. 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
    
  2. Comente el constructor predeterminado, como se indica a continuación.

    //public guitar()
    //{
    //}
    
  3. 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.