0%

DataGridView和BindingSource复合控件

  • 来源:明日科技
  • DataGridView和BindingSource复合控件

    实例说明

    复合控件是封装在公共容器内的 Windows 窗体控件的集合,这种控件通常称为用户控件,其中包含的子控件称为构成控件。复合控件包含与每个构成控件相关联的所有固有功能,允许程序设计人员有选择地公开和绑定它们的属性。本实例将使用DataGridView控件和BindingSource控件制作复合控件来显示学生档案信息,实例运行效果如图1所示。

    图1 DataGridView和BindingSource复合控件

    关键技术

    本实例实现时主要用到了DataGridView控件和BindingSource组件,下面分别对它们进行详细讲解。
    (1)DataGridView控件
    DataGridView控件,又称为数据表格控件,它提供一种强大而灵活的以表格形式显示数据的方式,可以使用DataGridView控件来显示少量数据的只读视图,也可以对其进行缩放以显示特大数据集的可编辑视图。使用DataGridView控件,可以显示和编辑来自多种不同类型的数据源的表格数据。将数据绑定到DataGridView控件非常简单和直观,在大多数情况下,只需设置DataSource属性即可。另外,DataGridView控件具有极高的可配置性和可扩展性,它提供有大量的属性、方法和事件,可以用来对该控件的外观和行为进行自定义。当需要在Windows窗体应用程序中显示表格数据时,首先考虑使用DataGridView控件。若要以小型网格显示只读值或者使用户能够编辑具有数百万条记录的表,DataGridView控件将提供可以方便地进行编程以及有效地利用内存的解决方案。

    DataGridView控件的常用属性及说明如表1所示。

    表1 DataGridView控件的常用属性及说明

    属性 说明
    AllowUserToAddRows 获取或设置一个值,该值指示是否向用户显示添加行的选项
    AllowUserToDeleteRows 获取或设置一个值,该值指示是否允许用户从DataGridView中删除行
    AlternatingRowsDefaultCellStyle 获取或设置应用于DataGridView的奇数行的默认单元格样式
    ColumnCount 获取或设置DataGridView中显示的列数
    Columns 获取一个包含控件中所有列的集合
    CurrentCell 获取或设置当前处于活动状态的单元格
    CurrentRow 获取包含当前单元格的行
    DataMember 获取或设置数据源中DataGridView显示其数据的列表或表的名称
    DataSource 获取或设置DataGridView所显示数据的数据源
    MultiSelect 获取或设置一个值,该值指示是否允许用户一次选择DataGridView的多个单元格、行或列
    NewRowIndex 获取新记录所在行的索引
    RowCount 获取或设置DataGridView中显示的行数
    Rows 获取一个集合,该集合包含DataGridView控件中的所有行
    SortOrder 获取一个值,该值指示是按升序或降序对DataGridView控件中的项进行排序,还是不排序

    DataGridView控件的常用事件及说明如表2所示。

    表2 DataGridView控件的常用事件及说明

    事件 说明
    CellClick 在单元格的任何部分被单击时发生
    CellContentClick 在单元格中的内容被单击时发生
    CellContentDoubleClick 在用户双击单元格的内容时发生
    CellDoubleClick 在用户双击单元格中的任何位置时发生
    CellMouseClick 在用户用鼠标单击单元格中的任何位置时发生
    CellMouseDoubleClick 在双击DataGridView中的单元格时发生
    Sorted 在DataGridView控件完成排序操作时发生

    (2)BindingSource组件

    BindingSource组件,又称为数据源绑定组件,它主要用于封装窗体的数据源。
    BindingSource组件的常用属性及说明如表3所示。

    表3 BindingSource组件的常用属性及说明

    属性 说明
    AllowNew 获取或设置一个值,该值指示是否可以使用AddNew方法向列表中添加项
    AllowRemove 获取一个值,它指示是否可从基础列表中移除项
    Count 获取基础列表中的总项数
    Current 获取列表中的当前项
    DataMember 获取或设置连接器当前绑定到的数据源中的特定列表
    DataSource 获取或设置连接器绑定到的数据源
    Item 获取或设置指定索引处的列表元素
    List 获取连接器绑定到的列表
    Position 获取或设置基础列表中当前项的索引
    Sort 获取或设置用于排序的列名称以及用于查看数据源中的行的排序顺序
    SortDirection 获取列表中项的排序方向
    SupportsSearching 获取一个值,它指示数据源是否支持使用Find方法进行搜索
    SupportsSorting 获取一个值,它指示数据源是否支持排序

    BindingSource组件的常用方法及说明如表4所示。

    表4 BindingSource组件的常用方法及说明

    方法 说明
    Add 将现有项添加到内部列表中
    AddNew 向基础列表添加新项
    ApplySort 使用指定的排序说明对数据源进行排序
    Clear 从列表中移除所有元素
    CopyTo 将List中的内容复制到指定数组,从指定索引值处开始
    Find 在数据源中查找指定的项
    GetEnumerator 检索List的一个枚举数
    IndexOf 搜索指定的对象,并返回整个列表中第一个匹配项的索引
    Insert 将一项插入列表中指定的索引处
    MoveFirst 移至列表中的第一项
    MoveLast 移至列表中的最后一项
    MoveNext 移至列表中的下一项
    MovePrevious 移至列表中的上一项
    Remove 从列表中移除指定的项
    RemoveAt 移除此列表中指定索引处的项
    RemoveCurrent 从列表中移除当前项

    设计过程

    (1)打开Visual Studio 2008开发环境,新建一个Windows窗体应用程序,命名为ComplexControl。
    (2)在当前项目中添加一个用户控件,将其命名为UserControl1。在用户控件中添加一个DataGridView 控件和一个BindingSource组件,并在DataGridView 控件的Columns属性中添加描述学生信息的字段。
    (3)程序主要代码如下:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    public void BindData()
    {
    //创建数据库连接对象
    SqlConnection con = new SqlConnection("server=mrwxk\\\wangxiaoke;uid=sa;pwd=;database=db_TomeOne;");
    con.Open(); //打开数据库连接
    SqlDataAdapter sda = new SqlDataAdapter("Select * From tb_Student", con); //创建桥接器对象
    DataTable dt = new DataTable(); //创建DataTable对象
    try
    {
    sda.Fill(dt); //填充DataTable
    }
    catch (Exception ex)
    {
    throw ex; //抛出异常
    }
    bindingSource1.DataSource = dt; //指定BindingSource数据源
    dataGridView1.DataSource = bindingSource1; //将BindingSource指定给DataGridView
    }

    秘笈心法

    心法领悟010:使DataGridView单元格中的内容换行!
    通过设置DataGridView控件的DefaultCellStyle属性的WrapMode属性可以实现单元格文本换行功能,代码如下:

    dataGridView1.DefaultCellStyle.WrapMode = DataGridViewTriState.True;

    觉得文章有用?请我喝杯咖啡~