Comment faire pour lier un contrôle DataGrid à une liste de tableaux d'objets ou des structures en l'aide de Visual C++ .NET ou de Visual C++ 2005

Traductions disponibles Traductions disponibles
Numéro d'article: 816164 - Voir les produits auxquels s'applique cet article
Agrandir tout | Réduire tout

Sommaire

Résumé

Cet article étape par étape explique comment lier une classe ArrayList d'objets à un contrôle DataGrid . L'exemple contient un formulaire Windows avec un contrôle DataGrid pour afficher les valeurs de propriété d'objet et contient quatre boutons de commande pour rechercher les lignes du contrôle DataGrid .

Configuration requise

Cet article suppose que vous êtes familiarisé avec les sujets suivants :
  • Visual C++ .NET ou Visual C++ 2005 concepts de programmation
La liste suivante met en évidence le matériel recommandé, logiciel infrastructure réseau et service packs dont vous avez besoin :
  • Microsoft Visual C++ .NET ou Microsoft Visual C++ 2005

Conception de la classe

Pour lier une classe à un contrôle, la classe doit être accesseurs de propriété. Toute propriété que vous liez doit contenir une fonction d'accesseur Get et une fonction accesseur Set . Vous implémenter des propriétés en utilisant la fonction Get et la fonction accesseur Set et vous avertir au compilateur que ce sont les fonctions de propriété qui utilisent le mot-clé __property . La classe exemple qui est utilisée dans cet article comporte trois membres :
__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; 
        }
};

Ajouter des instances de classe à une liste de tableaux

Pour créer des instances et les ajouter à la classe ArrayList , procédez comme suit :
  1. Déclarez une classe ArrayList comme suit :
    private: ArrayList *arrayList;
  2. Dans le gestionnaire d'événements FormLoad , créer des instances de la classe et réintégration les instances à la classe ArrayList comme suit :
    //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));
    

Lier la liste de tableaux à l'objet DataGrid

Une fois que la classe ArrayList est remplie, définir la propriété DataSource du contrôle DataGrid à la classe ArrayList . Les colonnes dans le contrôle DataGrid sont remplis selon les propriétés pour lequel accesseurs de propriété dans étendue existent.
// Bind the Array List to DataGrid.
      dataGrid1->DataSource = arrayList;

Déplacer dans la liste de tableaux

Vous pouvez utiliser la classe CurrencyManager pour vous déplacer dans la classe ArrayList . Pour ce faire, déclarez une variable pour la classe CurrencyManager comme suit :
private: CurrencyManager *currencyManager;
associer la classe CurrencyManager avec la fonction BindingContext du contrôle (dans ce cas, la liste de tableaux ).
currencyManager = (CurrencyManager*)dataGrid1->BindingContext
->Item[arrayList];
la classe CurrencyManager a une propriété de poste que vous pouvez manipuler pour effectuer une itération sur les membres de la classe ArrayList . En ajoutant ou soustrayant de, la valeur actuelle de la fonction poste , vous pouvez déplacer sur les lignes du contrôle 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;
				
currencyManager.Position = arrayList.Count - 1;

Exemple pas à pas

  1. Démarrez Microsoft Visual Studio .NET 2003 ou Microsoft Visual Studio 2005.
  2. Dans le menu Fichier , pointez sur Nouveau , puis cliquez sur projet .
  3. Cliquez sur projets Visual C++ sous types de projets , puis cliquez sur Windows Forms applications (.NET) sous modèles .

    note Dans Visual Studio 2005, cliquez sur Visual C++ sous types de projet , puis cliquez sur Windows Forms application sous modèles .
  4. Dans la zone de texte Nom , tapez Q816164 et puis cliquez sur OK .
  5. Dans l'Explorateur de solutions, passez en affichage de classes. Pour ce faire, cliquez sur Affichage de classes dans le menu Affichage .
  6. Cliquez avec le bouton droit sur Q816164 , pointez sur Ajouter et puis cliquez sur Ajouter une classe .
  7. Dans la boîte de dialogue Ajouter des classes , cliquez sur classe C++ générique sous modèles , puis cliquez sur Ouvrir .

    note Dans Visual Studio 2005, cliquez sur C++ Cass sous modèles , puis cliquez sur Ajouter .
  8. Dans l'Assistant classe C++ générique, tapez Guitar dans la zone de texte Nom de classe et puis cliquez sur Terminer . La classe Guitar apparaît comme suit :
    #pragma once
    
    class Guitar
    {
    public:
    	Guitar(void);
    	~Guitar(void);
    };
    
    Remarque dans Visual Studio 2005, le code est la suivante.
    #pragma once
    
    ref class Guitar
    {
    public:
    	Guitar(void);
    };
    
    Pour rendre Guitar classe un extensions managées pour C++ classe, ajoutez le mot-clé __gc avant de la classe Guitar , comme suit :
    __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. Pour ajouter l'option langue exécution prise en charge compilateur courantes dans Visual C++ 2005, procédez comme suit :
    1. Cliquez sur le projet , puis cliquez sur <ProjectName>Propriétés.

      note <ProjectName>est un espace réservé pour le nom du projet.
    2. Développez les propriétés de configuration , puis cliquez sur général .
    3. Cliquez pour sélectionner Common Language Runtime Support, l'ancienne syntaxe (/ clr:oldSyntax) dans le paramètre projet prend en charge du Common Language Runtime dans le volet droit, cliquez sur Appliquer , puis cliquez sur OK .
    Pour plus d'informations sur le common language runtime prennent en charge option de compilateur, reportez-vous au site de Web Microsoft suivant adresse :
    /CLR (Common Language Runtime compilation)
    http://msdn2.microsoft.com/en-us/library/k8d11d4s.aspx
  10. Fermez la fenêtre de code Guitar.h et puis basculer vers le concepteur de formulaires.
  11. Ajoutez un contrôle DataGrid à Form1. Redimensionnez le contrôle DataGrid pour correspondre aux quatre colonnes et trois lignes.
  12. Ajoutez quatre contrôles de bouton à Form1 et de puis organiser les boutons horizontalement.
  13. Modifiez la propriété de Bouton1 sur suivant .
  14. Modifiez la propriété de Bouton2 au précédent .
  15. Modifier la propriété texte de Bouton3 à premier .
  16. Modifiez la propriété de Button4 à dernier .
  17. Ouvrez le fichier Form1.h et ajoutez le code suivant au début:
    #include "Guitar.h"
  18. Ajoutez le code suivant à la classe Form1 :
    private: System::Collections::ArrayList *arrayList;	
    private: System::Windows::Forms::CurrencyManager *currencyManager;	
    
  19. Basculez vers le concepteur de formulaires, cliquez avec le bouton droit sur form1 et puis cliquez sur Propriétés .
  20. Cliquez sur l'icône d'événements , puis double-cliquez sur l'événement Load pour ajouter l'événement Form1_Load à votre code.
  21. Collez le code suivant dans l'événement 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. Basculez vers le concepteur de formulaires.
  23. Double-cliquez sur suivant et puis ajoutez le code suivant à l'événement Button1_Click : //Move
    //Move to the next position.
    currencyManager->Position++;
    
  24. Double-cliquez sur précédent et puis ajoutez le code suivant à l'événement button2_Click : //Move
    //Move to the previous position.
    currencyManager->Position--;
    
  25. Double-cliquez sur premier et puis ajoutez le code suivant à l'événement button3_Click : //Move
    //Move to the first position.
    currencyManager->Position =0;
    
  26. Double-cliquez sur précédent et puis ajoutez le code suivant à l'événement button4_Click : //Move
    //Move to the last position.
    currencyManager->Position = currencyManager->Count -1;
    
  27. Créer, puis exécutez le projet.
  28. Cliquez sur les boutons de commande pour se déplacer entre les lignes du contrôle DataGrid . Notez que vous pouvez modifier les valeurs des objets, si vous souhaitez.

Références

Pour plus d'informations aux consommateurs de données sur les formulaires de Windows, reportez-vous au site Web Microsoft Developer suivant :
http://msdn2.microsoft.com/en-us/library/aa983578(VS.71).aspx

Propriétés

Numéro d'article: 816164 - Dernière mise à jour: dimanche 13 mai 2007 - Version: 2.2
Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
  • Microsoft Visual C++ 2005 Express Edition
  • Microsoft Visual C++ .NET 2003 Initiation
Mots-clés : 
kbmt kbdatabinding kbcollections kbhowtomaster kbhowto KB816164 KbMtfr
Traduction automatique
IMPORTANT : Cet article est issu du système de traduction automatique mis au point par Microsoft (http://support.microsoft.com/gp/mtdetails). Un certain nombre d?articles obtenus par traduction automatique sont en effet mis à votre disposition en complément des articles traduits en langue française par des traducteurs professionnels. Cela vous permet d?avoir accès, dans votre propre langue, à l?ensemble des articles de la base de connaissances rédigés originellement en langue anglaise. Les articles traduits automatiquement ne sont pas toujours parfaits et peuvent comporter des erreurs de vocabulaire, de syntaxe ou de grammaire (probablement semblables aux erreurs que ferait une personne étrangère s?exprimant dans votre langue !). Néanmoins, mis à part ces imperfections, ces articles devraient suffire à vous orienter et à vous aider à résoudre votre problème. Microsoft s?efforce aussi continuellement de faire évoluer son système de traduction automatique.
La version anglaise de cet article est la suivante: 816164
L'INFORMATION CONTENUE DANS CE DOCUMENT EST FOURNIE PAR MICROSOFT SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE. L'UTILISATEUR ASSUME LE RISQUE DE L'UTILISATION DU CONTENU DE CE DOCUMENT. CE DOCUMENT NE PEUT ETRE REVENDU OU CEDE EN ECHANGE D'UN QUELCONQUE PROFIT.

Envoyer des commentaires

 

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