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

Seleccione idioma Seleccione idioma
Id. de artículo: 816164 - Ver los productos a los que se aplica este artículo
Expandir todo | Contraer todo

En esta página

Resumen

En este artículo paso a paso describe cómo enlazar una clase ArrayList de objetos a un control DataGrid . El ejemplo incluye un formulario Windows Forms con un control DataGrid para mostrar valores de propiedad de objeto y incluye 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 programación visuales C++ .NET o Visual C++ 2005
En la lista siguiente se describe el hardware, el software, la infraestructura de red y los service pack recomendados que se necesitarán:
  • Microsoft Visual C++ .NET o Microsoft Visual C++ 2005

Diseño de la clase

Para enlazar una clase a un control, la clase debe tener descriptores de acceso. Cualquier propiedad que se enlaza debe tener una función captadora y una función establecedora . Implementar propiedades utilizando la función captadora y la función establecedora y notificar el compilador que éstas son funciones de propiedad que utilizar la palabra clave __property . La clase de ejemplo que se utiliza en este artículo tiene tres miembros:
__gc class Guitar
{
private:
        String *make;
        String *model;
        short year;
public:
    Guitar(void);
    ~Guitar(void);
        
        Guitar(String *strMake, String *strModel, short shYear)
        {
            make = strMake;
            model = strModel;
            year = shYear;
        }

        __property String* get_Make() 
        {
            return make; 
        }
        __property void set_Make(String* val)
        {
            make = (val); 
        }
        __property String* get_Model()
        { 
            return model; 
        }
        __property void set_Model(String* val)
        {
            model = (val); 
        }

        __property short get_Year()
        { 
            return year; 
        }
        __property void set_Year(short shValue)
        {
            year = shValue; 
        }
};

Agregar instancias de clase a un objeto ArrayList

Para crear instancias y agregarlos a la clase ArrayList , siga estos pasos:
  1. Declarar una clase de ArrayList como sigue:
    private: ArrayList *arrayList;
  2. En el controlador de eventos FormLoad , crear instancias de la clase y, a continuación, agregue las instancias a la clase ArrayList como sigue:
    //Create an ArrayList.
    arrayList = new ArrayList();
    
    //Populate the array list.
    arrayList->Add(new guitar(S"GibSon",S"Les Paul",1958));
    arrayList->Add(new guitar(S"Fender",S"Jazz Bass",1958));
    arrayList->Add(new guitar(S"Guild",S"Bluesbird",1958));
    

Enlaza la ArrayList a DataGrid

Después de la clase ArrayList es rellenar, establezca la propiedad DataSource del control DataGrid a la clase ArrayList . Las columnas en el control DataGrid se rellenan basándose en las propiedades para el que existen descriptores de acceso en el ámbito.
// Bind the Array List to DataGrid.
      dataGrid1->DataSource = arrayList;

Mover por la ArrayList

Puede utilizar la clase CurrencyManager para desplazarse por la clase ArrayList . Para ello, declare una variable de la clase CurrencyManager como sigue:
private: CurrencyManager *currencyManager;
asociar la clase CurrencyManager con la función BindingContext del control (en este caso, la ArrayList ).
currencyManager = (CurrencyManager*)dataGrid1->BindingContext
->Item[arrayList];
la clase CurrencyManager tiene una propiedad de posición que puede manipular para recorrer en iteración los miembros de la clase ArrayList . Agregando o restando del valor actual de la función Position , puede mover por las filas del control DataGrid .
//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 = arrayList.Count - 1;
				

Ejemplo paso a paso

  1. Inicie Microsoft Visual Studio .NET 2003 o Microsoft Visual Studio 2005.
  2. En el menú archivo , seleccione nuevo y, a continuación, haga clic en proyecto .
  3. Haga clic en Proyectos de Visual C++ en Tipos de proyecto y haga la Aplicación de Windows Forms (. NET) en plantillas .

    Nota En Visual Studio 2005, haga clic en Visual C++ en Tipos de proyecto y, a continuación, haga clic en Aplicación de Windows Forms en plantillas .
  4. En el cuadro de texto nombre , escriba Q816164 y, a continuación, haga clic en Aceptar .
  5. En el Explorador de soluciones, cambie a vista de clase. Para ello, haga clic en Vista de clases en el menú Ver .
  6. Haga clic con el botón secundario del mouse en Q816164 , elija Agregar y, a continuación, haga clic en Agregar clase .
  7. En el cuadro de diálogo Agregar clase , haga clic en Clase genérica de C++ en plantillas y, a continuación, haga clic en Abrir .

    Nota En Visual Studio 2005, haga clic en C++ Cass en plantillas y, a continuación, haga clic en Agregar .
  8. En el Asistente de clase genérica de C++, escriba guitarra en el cuadro de texto nombre de clase y a continuación, haga clic en Finalizar . La clase de guitarra aparece como sigue:
    #pragma once
    
    class Guitar
    {
    public:
    	Guitar(void);
    	~Guitar(void);
    };
    
    Nota en Visual Studio 2005, el código es como sigue.
    #pragma once
    
    ref class Guitar
    {
    public:
    	Guitar(void);
    };
    
    Para realizar la guitarra clase de extensiones administradas de clase de C++, agregue la palabra clave __gc antes de la clase guitarra , como sigue:
    __gc class Guitar
    {
    public:
    	Guitar(void);
    	~Guitar(void);
    };
    
  9. Replace the existing code in the Guitar.h file with the following code:
    #pragma once
    
    using namespace System;
    __gc class Guitar
    {
    private:
            String *make;
            String *model;
            short year;
    public:
        Guitar(void);
        ~Guitar(void);
            
            Guitar(String *strMake, String *strModel, short shYear)
            {
                make = strMake;
                model = strModel;
                year = shYear;
            }
    
            __property String* get_Make() 
            {
                return make; 
            }
            __property void set_Make(String* val)
            {
                make = (val); 
            }
            __property String* get_Model()
            { 
                return model; 
            }
            __property void set_Model(String* val)
            {
                model = (val); 
            }
    
            __property short get_Year()
            { 
                return year; 
            }
            __property void set_Year(short shValue)
            {
                year = shValue; 
            }
    };
    
    
    Note You must add the common language runtime support compiler option (/clr:oldSyntax) in Visual C++ 2005 to successfully compile the previous code sample. Para agregar la opción de compilador de common language runtime compatibilidad en Visual C++ 2005, siga estos pasos:
    1. Haga clic en proyecto y, a continuación, haga clic en <ProjectName> propiedades .

      Nota <ProjectName> es un marcador de posición para el nombre del proyecto.
    2. Expanda Propiedades de configuración y, a continuación, haga clic en General .
    3. Haga clic para seleccionar compatible con Common Language Runtime, sintaxis antigua (/ CLR: oldSyntax) en la configuración de proyecto compatibilidad con Common Language Runtime en el panel derecho, haga clic en Aplicar y, a continuación, haga clic en Aceptar .
    Para obtener más información acerca de common language runtime admite (opción del compilador), visite el siguiente sitio Web de Microsoft:
    / clr (Common Language Runtime Compilation)
    http://msdn2.microsoft.com/en-us/library/k8d11d4s.aspx
  10. Cierre la ventana de código Guitar.h y a continuación, cambie al diseñador del formulario.
  11. Agregue un control DataGrid a Form1. Tamaño del control DataGrid para ajustar cuatro columnas y tres filas.
  12. Agregue cuatro controles Button a Form1 y, a continuación, organiza los botones horizontalmente.
  13. Cambie la propiedad Text de Button1 a siguiente .
  14. Cambie la propiedad Text de Button2 al anterior .
  15. Cambie la propiedad Text de Button3 primero a.
  16. Cambie la propiedad Text de Button4 a último .
  17. Abra el archivo Form1.h y agregue el código siguiente al principio:
    #include "Guitar.h"
  18. Agregue el código siguiente a la clase Form1 :
    private: System::Collections::ArrayList *arrayList;	
    private: System::Windows::Forms::CurrencyManager *currencyManager;	
    
  19. Cambie al diseñador de formularios, haga clic con el botón secundario del mouse en form1 y a continuación, haga clic en Propiedades .
  20. Haga clic en el icono de eventos y, a continuación, haga doble clic en el evento Load para agregar a su código de evento Form1_Load .
  21. Pegue el código siguiente en el evento Form1_Load :
    //Create an arraylist.
    arrayList = new ArrayList();
    
    arrayList->Add(new Guitar(S"GibSon",S"Les Paul",1958));
    arrayList->Add(new Guitar(S"Fender",S"Jazz Bass",1958));
    arrayList->Add(new Guitar(S"Guild",S"Bluesbird",1958));
    
                
     currencyManager = dynamic_cast <CurrencyManager*>
                     (dataGrid1->BindingContext->Item[arrayList]);
    // Bind the Array List to DataGrid.
    dataGrid1->DataSource = arrayList;
    
  22. Cambie al diseñador de formularios.
  23. Haga doble clic en siguiente y, a continuación, agregue el código siguiente al evento Button1_Click : //Move
    //Move to the next position.
    currencyManager->Position++;
    
  24. Haga doble clic en anterior y, a continuación, agregue el código siguiente al evento Button2_Click : //Move
    //Move to the previous position.
    currencyManager->Position--;
    
  25. Haga doble clic en primero y, a continuación, agregue el código siguiente al evento Button3_Click : //Move
    //Move to the first position.
    currencyManager->Position =0;
    
  26. Haga doble clic en último y, a continuación, agregue el código siguiente al evento button4_Click : //Move
    //Move to the last position.
    currencyManager->Position = currencyManager->Count -1;
    
  27. Genere y ejecute el proyecto.
  28. Haga clic en los botones de comando para desplazarse por las filas del control DataGrid . Observe que puede modificar los valores de los objetos, si es necesario.

Referencias

Para obtener más información acerca de los consumidores de datos en formularios Windows forms, visite el siguiente sitio Web de Microsoft Developer:
http://msdn2.microsoft.com/en-us/library/aa983578(VS.71).aspx

Propiedades

Id. de artículo: 816164 - Última revisión: domingo, 13 de mayo de 2007 - Versión: 2.2
La información de este artículo se refiere a:
  • Microsoft Visual C++ 2005 Express Edition
  • Microsoft Visual C++ .NET 2003 Standard
Palabras clave: 
kbmt kbdatabinding kbcollections kbhowtomaster kbhowto KB816164 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): 816164

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