DataGridTableStyle 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
表示 DataGrid 控件在运行时绘制的表。
public ref class DataGridTableStyle : System::ComponentModel::Component, System::Windows::Forms::IDataGridEditingService
public class DataGridTableStyle : System.ComponentModel.Component, System.Windows.Forms.IDataGridEditingService
type DataGridTableStyle = class
inherit Component
interface IDataGridEditingService
Public Class DataGridTableStyle
Inherits Component
Implements IDataGridEditingService
- 继承
- 实现
示例
下面的代码示例创建两DataGridTableStyle个 实例,并将每个 对象的 设置为 MappingNameTableName 中 DataSet的 DataTable 。 然后,该示例将 对象添加到DataGridColumnStyleGridColumnStylesCollection每个 DataGridTableStyle的 中。 有关运行的示例,请参阅示例 System.Windows.Forms.DataGrid 。
void AddCustomDataTableStyle()
{
/* Create a new DataGridTableStyle and set
its MappingName to the TableName of a DataTable. */
DataGridTableStyle^ ts1 = gcnew DataGridTableStyle;
ts1->MappingName = "Customers";
/* Add a GridColumnStyle and set its MappingName
to the name of a DataColumn in the DataTable.
Set the HeaderText and Width properties. */
DataGridColumnStyle^ boolCol = gcnew DataGridBoolColumn;
boolCol->MappingName = "Current";
boolCol->HeaderText = "IsCurrent Customer";
boolCol->Width = 150;
ts1->GridColumnStyles->Add( boolCol );
// Add a second column style.
DataGridColumnStyle^ TextCol = gcnew DataGridTextBoxColumn;
TextCol->MappingName = "custName";
TextCol->HeaderText = "Customer Name";
TextCol->Width = 250;
ts1->GridColumnStyles->Add( TextCol );
// Create the second table style with columns.
DataGridTableStyle^ ts2 = gcnew DataGridTableStyle;
ts2->MappingName = "Orders";
// Change the colors.
ts2->ForeColor = Color::Yellow;
ts2->AlternatingBackColor = Color::Blue;
ts2->BackColor = Color::Blue;
// Create new DataGridColumnStyle objects.
DataGridColumnStyle^ cOrderDate = gcnew DataGridTextBoxColumn;
cOrderDate->MappingName = "OrderDate";
cOrderDate->HeaderText = "Order Date";
cOrderDate->Width = 100;
ts2->GridColumnStyles->Add( cOrderDate );
PropertyDescriptorCollection^ pcol = this->BindingContext[ myDataSet,"Customers.custToOrders" ]->GetItemProperties();
DataGridColumnStyle^ csOrderAmount = gcnew DataGridTextBoxColumn( pcol[ "OrderAmount" ],"c",true );
csOrderAmount->MappingName = "OrderAmount";
csOrderAmount->HeaderText = "Total";
csOrderAmount->Width = 100;
ts2->GridColumnStyles->Add( csOrderAmount );
// Add the DataGridTableStyle objects to the collection.
myDataGrid->TableStyles->Add( ts1 );
myDataGrid->TableStyles->Add( ts2 );
}
private void AddCustomDataTableStyle()
{
/* Create a new DataGridTableStyle and set
its MappingName to the TableName of a DataTable. */
DataGridTableStyle ts1 = new DataGridTableStyle();
ts1.MappingName = "Customers";
/* Add a GridColumnStyle and set its MappingName
to the name of a DataColumn in the DataTable.
Set the HeaderText and Width properties. */
DataGridColumnStyle boolCol = new DataGridBoolColumn();
boolCol.MappingName = "Current";
boolCol.HeaderText = "IsCurrent Customer";
boolCol.Width = 150;
ts1.GridColumnStyles.Add(boolCol);
// Add a second column style.
DataGridColumnStyle TextCol = new DataGridTextBoxColumn();
TextCol.MappingName = "custName";
TextCol.HeaderText = "Customer Name";
TextCol.Width = 250;
ts1.GridColumnStyles.Add(TextCol);
// Create the second table style with columns.
DataGridTableStyle ts2 = new DataGridTableStyle();
ts2.MappingName = "Orders";
// Change the colors.
ts2.ForeColor = Color.Yellow;
ts2.AlternatingBackColor = Color.Blue;
ts2.BackColor = Color.Blue;
// Create new DataGridColumnStyle objects.
DataGridColumnStyle cOrderDate =
new DataGridTextBoxColumn();
cOrderDate.MappingName = "OrderDate";
cOrderDate.HeaderText = "Order Date";
cOrderDate.Width = 100;
ts2.GridColumnStyles.Add(cOrderDate);
PropertyDescriptorCollection pcol = this.BindingContext
[myDataSet, "Customers.custToOrders"].GetItemProperties();
DataGridColumnStyle csOrderAmount =
new DataGridTextBoxColumn(pcol["OrderAmount"], "c", true);
csOrderAmount.MappingName = "OrderAmount";
csOrderAmount.HeaderText = "Total";
csOrderAmount.Width = 100;
ts2.GridColumnStyles.Add(csOrderAmount);
// Add the DataGridTableStyle objects to the collection.
myDataGrid.TableStyles.Add(ts1);
myDataGrid.TableStyles.Add(ts2);
}
Private Sub AddCustomDataTableStyle()
' Create a new DataGridTableStyle and set
' its MappingName to the TableName of a DataTable.
Dim ts1 As New DataGridTableStyle()
ts1.MappingName = "Customers"
' Add a GridColumnStyle and set its MappingName
' to the name of a DataColumn in the DataTable.
' Set the HeaderText and Width properties.
Dim boolCol As New DataGridBoolColumn()
boolCol.MappingName = "Current"
boolCol.HeaderText = "IsCurrent Customer"
boolCol.Width = 150
ts1.GridColumnStyles.Add(boolCol)
' Add a second column style.
Dim TextCol As New DataGridTextBoxColumn()
TextCol.MappingName = "custName"
TextCol.HeaderText = "Customer Name"
TextCol.Width = 250
ts1.GridColumnStyles.Add(TextCol)
' Create the second table style with columns.
Dim ts2 As New DataGridTableStyle()
ts2.MappingName = "Orders"
' Change the colors.
ts2.ForeColor = Color.Yellow
ts2.AlternatingBackColor = Color.Blue
ts2.BackColor = Color.Blue
' Create new DataGridColumnStyle objects.
Dim cOrderDate As New DataGridTextBoxColumn()
cOrderDate.MappingName = "OrderDate"
cOrderDate.HeaderText = "Order Date"
cOrderDate.Width = 100
ts2.GridColumnStyles.Add(cOrderDate)
Dim pcol As PropertyDescriptorCollection = Me.BindingContext(myDataSet, "Customers.custToOrders").GetItemProperties()
Dim csOrderAmount As New DataGridTextBoxColumn(pcol("OrderAmount"), "c", True)
csOrderAmount.MappingName = "OrderAmount"
csOrderAmount.HeaderText = "Total"
csOrderAmount.Width = 100
ts2.GridColumnStyles.Add(csOrderAmount)
' Add the DataGridTableStyle objects to the collection.
myDataGrid.TableStyles.Add(ts1)
myDataGrid.TableStyles.Add(ts2)
End Sub
注解
控件 System.Windows.Forms.DataGrid 以网格的形式显示数据。 DataGridTableStyle是仅表示绘制网格的类。 不应将此网格与 DataTable 类混淆,类是网格的可能数据源。 DataGridTableStyle而是严格表示控件中绘制的网格。 因此,通过 DataGridTableStyle 可以控制每个 DataTable的网格外观。 若要指定 DataGridTableStyle 在显示来自特定 DataTable的数据时使用的 ,请将 设置为 MappingNameTableName 的 DataTable。
GridTableStylesCollection通过 TableStyles 属性检索的 包含控件使用System.Windows.Forms.DataGrid的所有 DataGridTableStyle 对象。 集合可以包含任意数量的 DataGridTableStyle 对象,但 MappingName 每个 对象的 必须是唯一的。 在运行时,这允许你根据用户的偏好,将不同的 DataGridTableStyle 替换为相同的数据。 要执行此操作:
GridTableStylesCollection使用 DataGridTableStyle 对象填充 。 DataGridTableStyle如果 中GridTableStylesCollection存在 ,其MappingName属性值等于 DataTable 对象的 TableName 属性,DataTable则会使用此 DataGridTableStyle显示 。 如果 不存在 DataGridTableStyle 匹配 MappingName的 DataTable ,则 以数据网格表的默认样式显示 。
如果需要其他网格样式,请使用
Item
属性选择适当的DataGridTableStyle (将 传递给TableNameItem[]属性) 并将返回对象的 设置为MappingName新值。Item[]使用 属性选择所需的 DataGridTableStyle,并将其设置为 MappingNameTableName 的 DataTable。
注意
在将 对象添加到 之前,始终创建 DataGridColumnStyle 对象并将其添加到 DataGridTableStyle 。GridTableStylesCollectionGridColumnStylesCollection 将具有有效MappingName值的空DataGridTableStyle添加到集合时,DataGridColumnStyle将自动生成对象。 因此,如果尝试将具有重复MappingName值的新DataGridColumnStyle对象添加到 ,GridColumnStylesCollection将引发异常。
若要确定当前显示的内容DataGridTableStyle,请使用 DataSource 的 System.Windows.Forms.DataGrid 和 DataMember 属性返回 CurrencyManager。 如果数据源实现 ITypedList 接口,则可以使用 GetListName 方法返回 MappingName 当前表的 。 下面的 C# 代码中显示了这一点:
private void PrintCurrentListName(DataGrid myDataGrid){
CurrencyManager myCM = (CurrencyManager)
BindingContext[myDataGrid.DataSource, myDataGrid.DataMember];
IList myList = myCM.List;
ITypedList thisList = (ITypedList) myList;
Console.WriteLine(thisList.GetListName(null));
}
DataSet如果 包含DataTable与 DataRelation 对象相关的对象,并且当前显示的 DataTable 是子表, DataMember 将返回一个字符串,在最简单的情况下为 TableName.RelationName () 。
DataTable如果 在层次结构中进一步向下,则字符串将包含父表的名称,后跟达到表的级别所需的必要RelationName值。 例如,假设层次结构关系中的三 DataTable 个对象 (从上到下) Regions
、 Customers
和 Orders
,以及两 DataRelation 个名为 RegionsToCustomers
和 CustomersToOrders
的对象,属性 DataMember 将返回“Regions.RegionsToCustomers.CustomersToOrders”。 但是, MappingName 随后将为“Orders”。
对象的集合 DataGridTableStyle 通过 TableStyles 的 System.Windows.Forms.DataGrid属性返回。
DataGridTableStyle显示 时, 的设置DataGridTableStyle将替代 控件的设置System.Windows.Forms.DataGrid。 如果未为特定 DataGridTableStyle 属性设置值, System.Windows.Forms.DataGrid 则将改用控件的值。 以下列表显示了 DataGridColumnStyle 可以设置为替代 System.Windows.Forms.DataGrid 控件属性的属性:
若要将 DataGrid 绑定到对象的强类型数组,该对象类型必须包含公共属性。 若要创建 DataGridTableStyle 显示数组的 ,请将 DataGridTableStyle.MappingName 属性设置为 typename
,其中 typename
替换为对象类型的名称。 另请注意, MappingName 属性区分大小写;类型名称必须完全匹配。 有关示例, MappingName 请参阅 属性。
还可以将 DataGridArrayList绑定到 。 的 ArrayList 一个功能是它可以包含多个类型的 对象,但 DataGrid 仅当列表中的所有项都与第一项属于同一类型时, 才能绑定到此类列表。 这意味着所有对象必须属于同一类型,或者它们必须继承自与列表中的第一项相同的类。 例如,如果列表中的第一项 Control是 ,则第二项 TextBox 可能是继承自 Control) 的 (。 另一方面,如果第一项 TextBox为 ,则第二个对象不能为 Control。 此外, ArrayList 绑定时中必须包含项,并且 中的 DataGridTableStyle 对象必须包含公共属性。 空 ArrayList 将导致空网格。 绑定到 时ArrayList,将 的 DataGridTableStyle 设置为MappingName“ArrayList”, (类型名称) 。
构造函数
DataGridTableStyle() |
初始化 DataGridTableStyle 类的新实例。 |
DataGridTableStyle(Boolean) |
使用指定值对 DataGridTableStyle 类的新实例进行初始化,以确定网格表是否为默认样式。 |
DataGridTableStyle(CurrencyManager) |
使用指定的 DataGridTableStyle 初始化 CurrencyManager 类的新实例。 |
字段
DefaultTableStyle |
获取默认的表样式。 |
属性
AllowSorting |
指示在使用此 DataGridTableStyle 时是否允许在网格表上进行排序。 |
AlternatingBackColor |
获取或设置网格中奇数行的背景色。 |
BackColor |
获取或设置网格中偶数行的背景色。 |
CanRaiseEvents |
获取一个指示组件是否可以引发事件的值。 (继承自 Component) |
ColumnHeadersVisible |
获取或设置一个值,该值指示列标题是否可见。 |
Container |
获取包含 IContainer 的 Component。 (继承自 Component) |
DataGrid |
获取或设置所绘制表的 DataGrid 控件。 |
DesignMode |
获取一个值,用以指示 Component 当前是否处于设计模式。 (继承自 Component) |
Events |
获取附加到此 Component 的事件处理程序的列表。 (继承自 Component) |
ForeColor |
获取或设置网格表的前景色。 |
GridColumnStyles |
获取所绘制的该表中列的集合。 |
GridLineColor |
获取或设置网格线的颜色。 |
GridLineStyle |
获取或设置网格线的样式。 |
HeaderBackColor |
获取或设置标题的背景色。 |
HeaderFont |
获取或设置用于标题的标题的字体。 |
HeaderForeColor |
获取或设置标题的前景色。 |
LinkColor |
获取或设置链接文本的颜色。 |
LinkHoverColor |
获取或设置当悬停在链接文本上方时显示的颜色。 |
MappingName |
获取或设置用于将此表映射到特定数据源的名称。 |
PreferredColumnWidth |
获取或设置在显示新网格时创建列所用的宽度。 |
PreferredRowHeight |
获取或设置在显示新网格时创建行所用的高度。 |
ReadOnly |
获取或设置一个值,该值指示是否可以编辑列。 |
RowHeadersVisible |
获取或设置一个值,该值指示行标题是否可见。 |
RowHeaderWidth |
获取或设置行标题宽度。 |
SelectionBackColor |
获取或设置选定单元格的背景色。 |
SelectionForeColor |
获取或设置选定单元格的前景色。 |
Site | (继承自 Component) |