Cómo enlazar un control DataGrid a un objeto ArrayList de objetos o estructuras mediante Visual Basic 2005 o Visual Basic .NET

Para una versión de Microsoft Visual C# .NET de este artículo, consulte 316303 .

Resumen

En este artículo paso a paso describe cómo enlazar una ArrayList de objetos a un control DataGrid . El ejemplo consta de un formulario de Windows de Microsoft con un control DataGrid para mostrar los valores de propiedad de objeto y cuatro botones de comando para examinar las filas del control DataGrid .

Requisitos

La lista siguiente describe el hardware recomendado, software, infraestructura de red y service packs que se necesitan:
  • Microsoft Visual Basic 2005 o Microsoft Visual Basic .NET
En este artículo se supone que está familiarizado con los temas siguientes:
  • Conceptos de programación de Visual Basic

Diseñar la clase

Una clase que se enlaza a un control debe tener descriptores de acceso de propiedad. Cualquier propiedad que se enlaza debe tener métodos de Propiedad Set y Get de propiedad . La clase de ejemplo que se utiliza en este artículo tiene tres miembros (sólo se muestra uno aquí.) Un constructor parametrizado también se ha proporcionado, pero no es un requisito.
Public Class guitar    Private m_make As String
Private m_model As String
Private m_year As Short

Public Sub New(ByVal make, ByRef model, ByVal year)
m_make = make
m_model = model
m_year = year
End Sub
Public Property make() As String
Get
Return m_make
End Get
Set(ByVal Value As String)
m_make = Value
End Set
End Property

End Class

Agregar instancias de clase a un objeto ArrayList


Para crear instancias y agregarlos a ArrayList, siga estos pasos:
  1. Declarar una ArrayList.
  2. Crear instancias de la clase y, a continuación, agregue las instancias a ArrayList.
Private al as New Arraylist()
al.Add(New guitar("Gibson", "Les Paul", 1958))
al.Add(New guitar("Fender", "Jazz Bass", 1964))
al.Add(New guitar("Guild", "Bluesbird", 1971))

Enlazar el control DataGrid ArrayList

Después de rellenar el ArrayList , establezca la propiedad DataSource del control DataGrid a ArrayList. Las columnas en el control DataGrid se rellenan basándose en las propiedades que existen descriptores de acceso de propiedad en el ámbito.
DataGrid1.DataSource = al

Proporciona un medio para examinar la ArrayList

Puede utilizar CurrencyManager para examinar la ArrayList. Para ello, asociar CurrencyManager BindingContext del control (en este caso, la ArrayList).
Private cManager As CurrencyManager
cManager = CType(DataGrid1.BindingContext(al), CurrencyManager)

La clase CurrencyManager tiene una propiedad de posición que se puede manipular para recorrer en iteración los miembros de ArrayList. Agregando o restando del valor actual de posición, puede examinar las filas del control DataGrid .
'Move forward one element.cManager.Position += 1
'Move back one element.
cManager.Position -= 1
'Move to the beginning.
cManager.Position = 0
'Move to the end.
cManager.Position = al.Count - 1

Ejemplo paso a paso

  1. En Visual Basic2005 o en Visual Basic .NET, cree un nuevo proyecto de aplicación para Windows. Se creará Form1 de forma predeterminada.
  2. En el menú proyecto , haga clic en Agregar clase para agregar una clase al proyecto.
  3. Reemplace el código en Class1.vb con el siguiente:
    Public Class guitar    Private m_make As String
    Private m_model As String
    Private m_year As Short

    Public Sub New(ByVal make, ByRef model, ByVal year)
    m_make = make
    m_model = model
    m_year = year
    End Sub
    Public Property make() As String
    Get
    Return m_make
    End Get
    Set(ByVal Value As String)
    m_make = Value
    End Set
    End Property
    Public Property model() As String
    Get
    Return m_model
    End Get
    Set(ByVal Value As String)
    m_model = Value
    End Set
    End Property
    Public Property year() As Short
    Get
    Return m_year
    End Get
    Set(ByVal Value As Short)
    m_year = Value
    End Set
    End Property
    End Class

  4. Cierre la ventana de código Class1.vb y, a continuación, cambie al diseñador de formularios.
  5. Agregue un control DataGrid a Form1. El tamaño del control DataGrid para adaptarse a cuatro columnas y tres filas.
  6. Agregue cuatro controles Button a Form1 y, a continuación, organiza los botones horizontalmente.
  7. Cambie la propiedad Text de Button1 a Next.
  8. Cambie la propiedad Text de Button2 al 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 cManager As CurrencyManagerPrivate al as New ArrayList()

  12. Pegue el código siguiente en el evento Form1_Load :
    al.Add(New guitar("Gibson", "Les Paul", 1958))al.Add(New guitar("Fender", "Jazz Bass", 1964))
    al.Add(New guitar("Guild", "Bluesbird", 1971))

    cManager = CType(DataGrid1.BindingContext(al), CurrencyManager)

    DataGrid1.DataSource = al

  13. Pegue el código siguiente después del procedimiento Form_Load :
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click        cManager.Position += 1
    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
    cManager.Position -= 1
    End Sub

    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
    cManager.Position = 0
    End Sub

    Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
    cManager.Position = al.Count - 1
    End Sub

  14. Genere y ejecute el proyecto.
  15. Haga clic en los botones de comando para desplazarse entre las filas del control DataGrid . Tenga en cuenta que puede modificar los valores de los objetos si lo desea.

Utilizando una estructura en lugar de una clase

Las reglas para una estructura de enlace son las mismas que las reglas para enlazar un objeto. Los descriptores de acceso de la propiedad (es decir, miembros) son necesarios. Una estructura que se crea para este fin es similar a una clase.


Para enlazar a una lista de matrices de estructuras, siga estos pasos:
  1. Cambiar la definición del módulo de clase de Class1.vb en el ejemplo de
    Public Class guitar'...
    End Class

    a la siguiente:
    Public Structure guitar'...
    End Structure

  2. Compilación y vuelva a ejecutar el programa de ejemplo y comprobar que funciona con una ArrayList de estructuras.

Referencias

Para obtener más información, vea el tema "Consumidores de datos en formularios Windows Forms" en el Visual Studio .NET ayuda en pantalla.
Propiedades

Id. de artículo: 316302 - Última revisión: 17 ene. 2017 - Revisión: 1

Comentarios