如何通过使用 Visual c + +.net 或 Visual c + + 2005年将 DataGrid 控件绑定到的对象或结构 ArrayList

文章翻译 文章翻译
文章编号: 816164 - 查看本文应用于的产品
展开全部 | 关闭全部

本文内容

概要

本分步指南介绍了如何将对象的一个 ArrayList 类绑定到 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; 
        }
};

将类实例添加到 ArrayList

若要创建实例和将它们添加到 ArrayList 类,请按照下列步骤操作:
  1. 声明一个 ArrayList 类,如下所示:
    private: ArrayList *arrayList;
  2. FormLoad 事件处理程序,创建,类的实例和将实例添加到 ArrayList 类,如下所示:
    //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));
    

将该 ArrayList 绑定到 DataGrid

ArrayList 类,则填充后,请将 DataGrid 控件的 数据源 属性设置为 ArrayList 类。将 DataGrid 控件中的列会填充基于的属性的范围内的属性访问器存在。
// Bind the Array List to DataGrid.
      dataGrid1->DataSource = arrayList;

通过在 ArrayList 移动

您可以使用 CurrencyManagerArrayList 类中移动。若要这样做声明 CurrencyManager 类的变量,如下所示:
private: CurrencyManager *currencyManager;
BindingContext 函数 (在此例 ArrayList),将控件的关联 CurrencyManager 类。
currencyManager = (CurrencyManager*)dataGrid1->BindingContext
->Item[arrayList];
CurrencyManager 类有一个 位置 属性,可以以循环访问 ArrayList 类的成员进行处理。通过添加到,或从该 位置 函数的当前值中减去,您可以移动浏览 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 窗体应用程序 (.NET)

    注意可视有关 Studio 的 2005 年在 项目类型 框中,单击 Visual c + +,然后单击 模板 下的 Windows 窗体应用程序
  4. 名称 文本框中键入 Q816164,然后单击 确定
  5. 在解决方案资源管理器中,切换到类视图。若要执行此操作在 视图 菜单上单击 类视图
  6. 用鼠标右键单击 Q816164,指向 添加,然后再单击 添加类
  7. 添加类 对话框中单击 模板,下的 一般 c + + 类,然后单击 打开

    注意在可视有关 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. 向 Form1 中添加一个 DataGrid 控件。大小以适应三个行和四个列将 DataGrid 控件。
  12. 将四个 按钮 控件添加到 Form1,然后横向排列按钮。
  13. 下一处 更改 Button1文本 属性。
  14. 更改到 前一节Button2文本 属性。
  15. 更改为 第一个Button3Text 属性。
  16. 上次 更改 Button4Text 属性。
  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 开发人员网站:
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
机器翻译
注意:这篇文章是由无人工介入的微软自动的机器翻译软件翻译完成。微软很高兴能同时提供给您由人工翻译的和由机器翻译的文章, 以使您能使用您的语言访问所有的知识库文章。然而由机器翻译的文章并不总是完美的。它可能存在词汇,语法或文法的问题,就像是一个外国人在说中文时总是可能犯这样的错误。虽然我们经常升级机器翻译软件以提高翻译质量,但是我们不保证机器翻译的正确度,也不对由于内容的误译或者客户对它的错误使用所引起的任何直接的, 或间接的可能的问题负责。
点击这里察看该文章的英文版: 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