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

Seleccione idioma Seleccione idioma
Id. de artículo: 316302 - Ver los productos a los que se aplica este artículo
Para obtener una versión de Microsoft Visual C# .NET de este artículo, consulte 316303.
Expandir todo | Contraer todo

En esta página

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

En la lista siguiente se describe el hardware, el software, la infraestructura de red y los Service Packs recomendados que necesitará:
  • 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 va a enlazarse a un control debe tener descriptores de acceso. Cualquier propiedad que van a enlazarse debe tener métodos Property Set y Get de propiedad . La clase de ejemplo que se utiliza en este artículo tiene tres miembros (sólo se muestra 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))
				

Enlaza la ArrayList a DataGrid

Una vez que se ha rellenado la ArrayList , establecer la propiedad DataSource del control DataGrid a ArrayList . Las columnas en el control DataGrid se rellenan basándose en las propiedades para el que existen descriptores de acceso en el ámbito.
DataGrid1.DataSource = al
				

Proporcionar 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 puede manipular para recorrer en iteración los miembros de ArrayList . Agregando o restando del valor actual de Position , 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 manera predeterminada.
  2. En el menú proyecto , haga clic en Agregar clase para agregar una clase al proyecto.
  3. Reemplace el código de Class1.vb con lo 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 siguiente .
  8. Cambie la propiedad Text de Button2 al anterior .
  9. Cambie la propiedad Text de Button3 primero a.
  10. Cambie la propiedad Text de Button4 a último .
  11. Agregue el código siguiente a la clase Form1 :
    Private cManager As CurrencyManager
    Private 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 mover 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 enlazar una estructura son el mismo que las reglas para enlazar un objeto. Descriptores de acceso (es decir, el miembro) son necesarios. Una estructura que se crea para este propósito se asemeja a una clase.

Para enlazar a una ArrayList 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
    					
    al siguiente:
    Public Structure guitar
    '...
    End Structure
    					
  2. Crear y ejecutar el programa de ejemplo de nuevo y compruebe 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 la Ayuda de Visual Studio .NET en línea.

Propiedades

Id. de artículo: 316302 - Última revisión: miércoles, 6 de diciembre de 2006 - Versión: 3.3
La información de este artículo se refiere a:
  • Microsoft Visual Basic 2005
  • Microsoft Visual Basic .NET 2003 Standard Edition
  • Microsoft Visual Basic .NET 2002 Standard Edition
Palabras clave: 
kbmt kbvs2005swept kbvs2005applies kbhowtomaster KB316302 KbMtes
Traducción automática
IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.
Haga clic aquí para ver el artículo original (en inglés): 316302

Enviar comentarios

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com