如何將至物件或結構的陣列清單的 DataGrid 控制項繫結使用 Visual C++.NET 或 Visual C++ 2005

文章翻譯 文章翻譯
文章編號: 816164 - 檢視此文章適用的產品。
全部展開 | 全部摺疊

在此頁中

結論

本文將逐步告訴您,如何將一個 陣列清單 物件類別的繫結至 DataGrid 控制項。範例包括具有 DataGrid 控制項,以顯示物件屬性值的 Windows 表單,且包括四個命令按鈕來瀏覽 DataGrid 控制項的資料列。

需求

本文假設您已熟悉下列主題:
  • Visual C++.NET 或 Visual C++ 2005年程式設計概念
下列清單列出建議的硬體、 軟體、 網路基礎結構及您需要的服務套件:
  • Microsoft Visual C++.NET 或 Microsoft Visual C++ 2005

在類別的設計

若要將類別繫結至控制項,類別必須具有屬性存取子。您將繫結至任何屬性必須有函式 gettersetter 函式。藉由 getter 函式和 setter] 函式實作屬性,並告知編譯器這些是使用 __property 關鍵字的屬性函式。本文中所使用的範例類別有三個成員:
__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; 
        }
};

將類別執行個體加入至陣列

若要建立執行個體,並將它們加入 陣列清單 類別,請依照下列步驟執行:
  1. 宣告一個 陣列清單 類別,如下所示:
    private: ArrayList *arrayList;
  2. FormLoad 事件處理常式中建立之類別的執行個體,然後新增該執行個體 陣列清單 類別,如下所示:
    //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));
    

將陣列清單繫結至 DataGrid

填入 陣列清單 類別之後在 陣列清單 類別會將 [DataGrid 控制項的 資料來源 屬性的設定。DataGrid 控制項中的資料行被填入根據存在範圍內屬性存取子屬性。
// Bind the Array List to DataGrid.
      dataGrid1->DataSource = arrayList;

陣列清單中移動

您可以使用 CurrencyManager 類別 陣列清單 類別之間移動。若要執行此動作宣告 CurrencyManager 類別變數,如下所示:
private: CurrencyManager *currencyManager;
建立 CurrencyManager 類別以 BindingContext 函數的控制項 (在此情況下,陣列清單) 之間的關聯。
currencyManager = (CurrencyManager*)dataGrid1->BindingContext
->Item[arrayList];
CurrencyManager 類別有可以操作來逐一查看 陣列清單 類別的成員的 位置 屬性。藉由新增到,或從目前 位置 函式的值減去,您可以移動透過 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;
				

雖說是逐步範例

  1. 啟動 Microsoft Visual Studio.NET 2003年或 Microsoft Visual Studio 2005。
  2. 在 [檔案] 功能表上指向 [新增],然後按一下 [專案]。
  3. 按一下 [Visual C++ 專案 在 [專案類型,然後按一下 [範本] 下的 [Windows Form 應用程式 (.NET)

    附註在 Visual 的 Studio 2005 中按一下 [專案類型,] 下的 [Visual C++],然後按一下 [範本] 下方的 [Windows Form 應用程式]。
  4. 在 [名稱] 文字方塊中輸入 Q816164,],然後再按一下 [確定]]。
  5. 在方案總管] 切換到類別檢視。如果要執行這項操作,按一下 [檢視] 功能表上的 [類別檢視]。
  6. Q816164] 上按一下滑鼠右鍵,指向 [新增],然後再按一下 [加入類別
  7. 在 [加入類別] 對話方塊按一下 [範本 下的 [泛型 C + + 類別,然後按一下 [開啟舊檔]。

    附註在 Visual 的 Studio 2005 中按一下 [範本,] 下的 [C + + Cass,然後按一下 [新增]。
  8. 在一般的 C + + 類別精靈中在 [類別名稱] 文字方塊中輸入 吉他],然後再按一下 [完成]。吉他 類別會出現,如下所示:
    #pragma once
    
    class Guitar
    {
    public:
    	Guitar(void);
    	~Guitar(void);
    };
    
    Visual Studio 2005 中的 附註,程式碼是,如下所示。
    #pragma once
    
    ref class Guitar
    {
    public:
    	Guitar(void);
    };
    
    將以便 吉他 類別 C + + 類別的受管理的擴充程式 __gc 關鍵字加入之前 吉他] 類別,如下所示:
    __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. 若要在 Visual C++ 2005年中加入常用的語言執行階段支援編譯器選項,請依照下列步驟執行:
    1. 按一下 [專案,] 然後按一下 [<ProjectName> 屬性

      附註<ProjectName> 是專案的名稱的預留位置。
    2. 展開 [組態屬性,] 然後按一下 [一般
    3. 按一下以選取 通用語言執行階段支援、 舊語法 (/ clr:oldSyntax)通用語言執行階段支援 的專案設定中在右窗格中,按一下 套用,],然後再按一下 [確定]
    如需有關通用語言執行階段支援編譯器選項,請造訪下列 Microsoft 網站:
    / clr (通用語言執行階段編譯)
    http://msdn2.microsoft.com/en-us/library/k8d11d4s.aspx
  10. 關閉 Guitar.h 程式碼視窗,然後切換至 [表單設計工具。
  11. DataGrid 控制項加入至 Form1。大小 DataGrid 控制項,以符合四個資料行和三個資料列。
  12. 將四個 按鈕 控制項加入至 Form1,然後水平排列按鈕。
  13. 將的 Button1 的 [文字] 屬性變更為 下一步]
  14. 將的 Button2 的 [文字] 屬性變更為 前一頁
  15. 將的 Button3 的 [文字] 屬性變更為 第一次
  16. 將的 Button4 的 [文字] 屬性變更為 上次
  17. 開啟 Form1.h] 檔案,並將下列程式碼加入開頭:
    #include "Guitar.h"
  18. 將下列程式碼加入至 Form1 類別:
    private: System::Collections::ArrayList *arrayList;	
    private: System::Windows::Forms::CurrencyManager *currencyManager;	
    
  19. 切換至表單設計工具,以滑鼠右鍵按一下 form1,然後再按一下 [內容]
  20. 按一下 [事件] 圖示,然後再按兩下 [Load 事件將 Form1_Load 事件新增至您的程式碼。
  21. 下列程式碼貼 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. 切換至表單設計工具。
  23. 連按兩下 [下一步,然後將下列程式碼加入至 button1_Click 事件:
    //Move to the next position.
    currencyManager->Position++;
    
  24. 連按兩下 [上一步,然後將下列程式碼加入至 button2_Click 事件:
    //Move to the previous position.
    currencyManager->Position--;
    
  25. 連按兩下 [第一次,然後將下列程式碼加入至 button3_Click 事件:
    //Move to the first position.
    currencyManager->Position =0;
    
  26. 連按兩下 [姓氏,然後將下列程式碼加入至 button4_Click 事件:
    //Move to the last position.
    currencyManager->Position = currencyManager->Count -1;
    
  27. 建置,然後再執行該專案。
  28. 按一下指令按鈕,DataGrid 控制項的資料列中移動。如果您需要,請注意您可以編輯該物件的值。

?考

如需更多有關資訊消費者的資料 Windows 表單上,請造訪下列 Microsoft 開發 o 人 h 員 ? 工 u 具 ? 網站:
http://msdn2.microsoft.com/en-us/library/aa983578(VS.71).aspx

屬性

文章編號: 816164 - 上次校閱: 2007年5月13日 - 版次: 2.2
這篇文章中的資訊適用於:
  • Microsoft Visual C++ 2005 Express Edition
  • Microsoft Visual C++ .NET 2003 Standard Edition
關鍵字:?
kbmt kbdatabinding kbcollections kbhowtomaster kbhowto KB816164 KbMtzh
機器翻譯
重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。
按一下這裡查看此文章的英文版本:816164
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。

提供意見

 

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