Share via


如何:向 Windows 窗体 DataGrid 控件添加表和列

注意

DataGridView 控件取代了 DataGrid 控件并添加了功能;但是,可以选择保留 DataGrid 控件以实现向后兼容并供将来使用。 有关详细信息,请参阅 Windows 窗体 DataGridView 控件与 DataGrid 控件之间的区别

可以通过创建 DataGridTableStyle 对象并将它们添加到 GridTableStylesCollection 对象(可通过 DataGrid 控件的 TableStyles 属性访问)在表格和列中显示 Windows 窗体 DataGrid 控件中的数据。 每个表样式都会显示在 DataGridTableStyle 对象的 MappingName 属性中指定的任何数据表格的内容。 默认情况下,未指定列样式的表样式将显示该数据表中的所有列。 可以通过将 DataGridColumnStyle 对象添加到 GridColumnStylection 对象来限制表中显示的列,该对象可通过每个 DataGridTableStyle 对象的 GridColumnStyles 属性访问

以编程方式向 DataGrid 添加表和列

  1. 为了在表中显示数据,必须首先将 DataGrid 控件绑定到数据集。 有关详细信息,请参阅如何:将 Windows 窗体 DataGrid 控件绑定到数据源

    注意

    以编程方式指定列样式时,始终先创建 DataGridColumnStyle 对象并将它们添加到 GridColumnStylesCollection 对象,然后再将 DataGridTableStyle 对象添加到 GridTableStylesCollection 对象。 当你将一个空的 DataGridTableStyle 对象添加到集合中时,会自动为你生成 DataGridColumnStyle 对象。 因此,如果你尝试将具有重复 MappingName 值的新 DataGridColumnStyle 对象添加到 GridColumnStylesCollection 对象,则会引发异常

  2. 声明新的表样式并设置其映射名称。

    Dim ts1 As New DataGridTableStyle()
    ts1.MappingName = "Customers"
    
    DataGridTableStyle ts1 = new DataGridTableStyle();
    ts1.MappingName = "Customers";
    
    DataGridTableStyle* ts1 = new DataGridTableStyle();
    ts1->MappingName = S"Customers";
    
  3. 声明新的列样式并设置其映射名称和其他属性。

    Dim myDataCol As New DataGridBoolColumn()
    myDataCol.HeaderText = "My New Column"
    myDataCol.MappingName = "Current"
    
    DataGridBoolColumn myDataCol = new DataGridBoolColumn();
    myDataCol.HeaderText = "My New Column";
    myDataCol.MappingName = "Current";
    
    DataGridBoolColumn^ myDataCol = gcnew DataGridBoolColumn();
    myDataCol->HeaderText = "My New Column";
    myDataCol->MappingName = "Current";
    
  4. 调用 GridColumnStylesCollection 对象的 Add 方法以将列添加到表样式

    ts1.GridColumnStyles.Add(myDataCol)
    
    ts1.GridColumnStyles.Add(myDataCol);
    
    ts1->GridColumnStyles->Add(myDataCol);
    
  5. 调用 GridTableStylesCollection 对象的 Add 方法将表样式添加到数据网格

    DataGrid1.TableStyles.Add(ts1)
    
    dataGrid1.TableStyles.Add(ts1);
    
    dataGrid1->TableStyles->Add(ts1);
    

另请参阅