Vorgehensweise zum Binden eines DataGrid-Steuerelements an einer ArrayList mit Objekten oder Strukturen mithilfe von Visual C++ .NET oder Visual C++ 2005

SPRACHE AUSWÄHLEN SPRACHE AUSWÄHLEN
Artikel-ID: 816164 - Produkte anzeigen, auf die sich dieser Artikel bezieht
Alles erweitern | Alles schließen

Auf dieser Seite

Zusammenfassung

Dieser schrittweise aufgebaute Artikel beschreibt, wie eine ArrayList -Klasse von Objekten an ein DataGrid -Steuerelement gebunden. Das Beispiel enthält ein Windows Form mit einem DataGrid -Steuerelement Objekteigenschaftenwerte anzeigen sowie vier Befehlsschaltflächen zum Durchsuchen der Zeilen eines DataGrid -Steuerelements.

Voraussetzungen

In diesem Artikel wird vorausgesetzt, dass Sie über Erfahrungen auf den folgenden Gebieten verfügen:
  • Visual C++ .NET oder Visual C++ 2005 Programmierkonzepte
Die folgende Liste führt die empfohlene Hardware, Software, Netzwerkinfrastruktur und Servicepacks, die Sie benötigen:
  • Microsoft Visual C++ .NET oder Microsoft Visual C++ 2005

Entwurf der Klasse

Um eine Klasse an ein Steuerelement zu binden, muss die Klasse Eigenschaftenaccessoren haben. Jede Eigenschaft, die Sie binden muss eine Getter -Funktion und eine Setter -Funktion haben. Sie implementieren Eigenschaften, indem Sie die Funktion Getter und Setter -Funktion, und Sie benachrichtigen des Compilers, dass diese Eigenschaft Funktionen sind, die das __property -Schlüsselwort verwenden. Die Beispiel-Klasse, in diesem Artikel verwendeten, hat drei Member:
__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; 
        }
};

Hinzufügen von Klasseninstanzen zu einer ArrayList

Erstellen von Instanzen und fügen Sie der ArrayList -Klasse hinzu, gehen Sie folgendermaßen vor:
  1. Deklarieren Sie eine ArrayList -Klasse wie folgt:
    private: ArrayList *arrayList;
  2. In der FormLoad -Ereignishandler erstellen Instanzen der Klasse und fügen Sie dann die Instanzen hinzu die ArrayList -Klasse wie folgt:
    //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));
    

Binden Sie die ArrayList an das DataGrid-Steuerelement

Nachdem die ArrayList -Klasse aufgefüllt wird, legen Sie die DataSource -Eigenschaft des DataGrid -Steuerelements auf die ArrayList -Klasse. Die Spalten im DataGrid -Steuerelement werden aufgefüllt Grundlage der Eigenschaften für die im Bereich Eigenschaftenaccessoren vorhanden sind.
// Bind the Array List to DataGrid.
      dataGrid1->DataSource = arrayList;

Verschieben Sie mit der ArrayList

Die Klasse CurrencyManager können Sie um durch die ArrayList -Klasse zu bewegen. Dazu deklarieren Sie eine Variable für die Klasse CurrencyManager wie folgt:
private: CurrencyManager *currencyManager;
die CurrencyManager -Klasse mit der BindingContext -Funktion des Steuerelements (in diesem Fall die ArrayList ) zuordnen.
currencyManager = (CurrencyManager*)dataGrid1->BindingContext
->Item[arrayList];
die Klasse CurrencyManager hat eine Eigenschaft Position , die Sie zur Iteration über die Member der ArrayList -Klasse ändern können. Durch Hinzufügen zum oder Subtraktion vom aktuellen Wert der Position -Funktion, können Sie durch die Zeilen des DataGrid -Steuerelements verschieben.
//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;
				

Vorgehensweise: Beispiel

  1. Starten Sie Microsoft Visual Studio .NET 2003 oder Microsoft Visual Studio 2005.
  2. Zeigen im Menü Datei auf neu , und klicken Sie dann auf Projekt .
  3. Klicken Sie auf Visual C++-Projekte unter Projekttypen , und klicken Sie unter Vorlagen Windows Forms-Anwendung (.NET) .

    Hinweis: Klicken Sie in Visual Studio 2005 unter Projekttypen auf Visual C++ , und klicken Sie dann unter Vorlagen auf Windows Forms-Anwendung .
  4. Geben Sie in das Textfeld Name Q816164 und klicken Sie dann auf OK .
  5. Wechseln Sie im Projektmappen-Explorer zur Klasse. Dazu klicken Sie im Ansicht auf Klassenansicht .
  6. Klicken Sie mit der rechten Maustaste auf Q816164 , zeigen Sie auf Hinzufügen und klicken Sie dann auf Klasse hinzufügen .
  7. Klicken Sie im Dialogfeld Klasse hinzufügen klicken Sie unter Vorlagen auf Generischen C++-Klasse , und klicken Sie dann auf Öffnen .

    Hinweis: Klicken Sie in Visual Studio 2005 unter Vorlagen auf C++-Cass , und klicken Sie dann auf Hinzufügen .
  8. Geben Sie in der generischen C++-Klassen-Assistenten Gitarre im Textfeld Klassenname und klicken Sie dann auf Fertig stellen . Die Gitarre Klasse wie folgt angezeigt:
    #pragma once
    
    class Guitar
    {
    public:
    	Guitar(void);
    	~Guitar(void);
    };
    
    Hinweis In Visual Studio 2005, der Code lautet wie folgt.
    #pragma once
    
    ref class Guitar
    {
    public:
    	Guitar(void);
    };
    
    Fügen Sie damit die Gitarre -Klasse von Managed Extensions for C++-Klasse, das __gc -Schlüsselwort vor die Gitarre -Klasse, wie folgt:
    __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. Gehen Sie folgendermaßen vor um die common Language Common Language Runtime Unterstützung-Compileroption in Visual C++ 2005 hinzuzufügen:
    1. Klicken Sie auf Projekt und dann auf <ProjectName> Eigenschaften .

      Hinweis: <ProjectName> ist ein Platzhalter für den Namen des Projekts.
    2. Erweitern Sie Konfiguration , und klicken Sie dann auf Allgemein .
    3. Klicken Sie auf Common Language Runtime-Unterstützung, alte Syntax (/ CLR: oldSyntax) in der Common Language Runtime-Unterstützung Projekt Einstellung im rechten Fensterbereich klicken Sie auf Übernehmen und klicken Sie dann auf OK .
    Weitere Informationen über die common Language Runtime unterstützt Compileroption, besuchen Sie die folgenden Microsoft-Website:
    / Clr (Common Language Runtime Compilation)
    http://msdn2.microsoft.com/en-us/library/k8d11d4s.aspx
  10. Schließen Sie das Guitar.h-Code-Fenster, und wechseln Sie zur Formulardesigner.
  11. Fügen Sie ein DataGrid -Steuerelement zu Form1 hinzu. Größe des DataGrid -Steuerelements an vier Spalten und drei Zeilen anpassen.
  12. Fügen Sie vier Button -Steuerelemente zu Form1 hinzu, und ordnen Sie die Schaltflächen horizontal an.
  13. Ändern Sie die Text -Eigenschaft von Button1 auf Weiter .
  14. Ändern Sie die Text -Eigenschaft von Button2 auf zurück .
  15. Ändern Sie die Text -Eigenschaft von Button3 auf Erster .
  16. Ändern Sie die Text -Eigenschaft von Button4 auf Letzte .
  17. Öffnen Sie die Datei Form1.h, und fügen Sie den folgenden Code am Anfang:
    #include "Guitar.h"
  18. Fügen Sie der Klasse Form1 den folgenden Code:
    private: System::Collections::ArrayList *arrayList;	
    private: System::Windows::Forms::CurrencyManager *currencyManager;	
    
  19. Wechseln Sie zum Formulardesigner, klicken Sie mit der rechten Maustaste auf form1 und klicken Sie dann auf Eigenschaften .
  20. Klicken Sie auf das Symbol Ereignisse , und doppelklicken Sie dann auf das Ereignis Load , um das Form1_Load -Ereignis Code hinzufügen.
  21. Fügen Sie den folgenden Code in die Form1_Load -Ereignis:
    //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. Wechseln Sie zum Formulardesigner.
  23. Doppelklicken Sie auf Weiter und fügen Sie den folgenden Code zum Ereignis Button1_Click hinzu:
    //Move to the next position.
    currencyManager->Position++;
    
  24. Doppelklicken Sie auf zurück und fügen Sie dem Button2_Click -Ereignis den folgenden Code hinzu:
    //Move to the previous position.
    currencyManager->Position--;
    
  25. Doppelklicken Sie auf erste und fügen Sie dem Ereignis " Button3_Click den folgenden Code hinzu:
    //Move to the first position.
    currencyManager->Position =0;
    
  26. Doppelklicken Sie auf Letzte und fügen Sie das button4_Click -Ereignis den folgenden Code hinzu:
    //Move to the last position.
    currencyManager->Position = currencyManager->Count -1;
    
  27. Erstellen Sie, und führen Sie das Projekt.
  28. Klicken Sie auf die Befehlsschaltflächen zum Bewegen in der Zeilen eines DataGrid -Steuerelements. Beachten Sie, dass Sie die Werte der Objekte bearbeiten können, wenn Sie.

Informationsquellen

Informationen zum Consumer von Daten auf Windows Forms finden Sie auf den folgenden Microsoft Developer-Website:
http://msdn2.microsoft.com/en-us/library/aa983578(VS.71).aspx

Eigenschaften

Artikel-ID: 816164 - Geändert am: Sonntag, 13. Mai 2007 - Version: 2.2
Die Informationen in diesem Artikel beziehen sich auf:
  • Microsoft Visual C++ 2005 Express Edition
  • Microsoft Visual C++ .NET 2003 Standard Edition
Keywords: 
kbmt kbdatabinding kbcollections kbhowtomaster kbhowto KB816164 KbMtde
Maschinell übersetzter Artikel
Wichtig: Dieser Artikel wurde maschinell und nicht von einem Menschen übersetzt. Die Microsoft Knowledge Base ist sehr umfangreich und ihre Inhalte werden ständig ergänzt beziehungsweise überarbeitet. Um Ihnen dennoch alle Inhalte auf Deutsch anbieten zu können, werden viele Artikel nicht von Menschen, sondern von Übersetzungsprogrammen übersetzt, die kontinuierlich optimiert werden. Doch noch sind maschinell übersetzte Texte in der Regel nicht perfekt, insbesondere hinsichtlich Grammatik und des Einsatzes von Fremdwörtern sowie Fachbegriffen. Microsoft übernimmt keine Gewähr für die sprachliche Qualität oder die technische Richtigkeit der Übersetzungen und ist nicht für Probleme haftbar, die direkt oder indirekt durch Übersetzungsfehler oder die Verwendung der übersetzten Inhalte durch Kunden entstehen könnten.
Den englischen Originalartikel können Sie über folgenden Link abrufen: 816164
Microsoft stellt Ihnen die in der Knowledge Base angebotenen Artikel und Informationen als Service-Leistung zur Verfügung. Microsoft übernimmt keinerlei Gewährleistung dafür, dass die angebotenen Artikel und Informationen auch in Ihrer Einsatzumgebung die erwünschten Ergebnisse erzielen. Die Entscheidung darüber, ob und in welcher Form Sie die angebotenen Artikel und Informationen nutzen, liegt daher allein bei Ihnen. Mit Ausnahme der gesetzlichen Haftung für Vorsatz ist jede Haftung von Microsoft im Zusammenhang mit Ihrer Nutzung dieser Artikel oder Informationen ausgeschlossen.

Ihr Feedback an uns

 

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