如何:设置 Windows 窗体 DataGrid 控件的格式
提示
DataGridView 控件取代了 DataGrid 控件并添加了功能;但是,可以选择保留 DataGrid 控件以实现向后兼容并供将来使用。 有关更多信息,请参见 Windows 窗体 DataGridView 控件和 DataGrid 控件之间的区别。
对 DataGrid 控件的不同部分应用不同颜色可使得该控件中的信息更加易于阅读和解释。 颜色可以应用于行和列。 您还可以自行决定隐藏还是显示行和列。
设置 DataGrid 控件的格式有三个基本方面。 您可以设置属性来建立显示数据的默认样式。 以此为基础,接着可以自定义某些表在运行时的显示方式。 最后,您可以修改在数据网格中显示哪些列以及显示哪些颜色和其他格式设置。
设置数据网格的格式时,首先可以设置 DataGrid 本身的属性。 以这些颜色和格式选择为基础,您可以根据显示的数据表和列进行更改。
为 DataGrid 控件创建默认样式
根据需要设置以下属性:
Property
说明
BackColor 属性定义网格偶数行的颜色。 在将 AlternatingBackColor 属性设置为另一种颜色时,间隔行(第 1 行、第 3 行、第 5 行,等等)将设置为此新颜色。
网格偶数行(第 0 行、第 2 行、第 4 行、第 6 行,等等)的背景色。
BackColor 和 AlternatingBackColor 属性可以确定网格中行的颜色,而 BackgroundColor 属性可以确定非行区域的颜色。只有在网格滚动到底部或网格中只包含几行时,才显示非行区域。
网格的边框样式,BorderStyle 枚举值之一。
网格正上方网格窗口标题的背景色。
网格顶部标题的字体。
网格的窗口标题的背景色。
用于显示网格中文本的字体。
数据网格行中的数据所显示的字体颜色。
数据网格的网格线的颜色。
网格单元格分隔线的样式,DataGridLineStyle 枚举值之一。
行标头和列标头的背景色。
用于列标头的字体。
网格的列标头的前景色,包括列标头文本和加/减标志符号(以便在显示多个相关的表时展开行)。
数据网格中所有链接的文本颜色,包括指向子表的链接、关系名称,等等。
在子表中,这是父行的背景色。
在子表中,这是父行的前景色。
通过 DataGridParentRowsLabelStyle 枚举确定父行中是否显示表名和列名。
网格中列的默认宽度(以像素为单位)。 请在重置 DataSource 和 DataMember 属性(单独进行设置,或者通过 SetDataBinding 方法设置)之前设置此属性,否则此属性将无效。
该属性不能设置为小于 0 的值。
网格中行的行高(以像素为单位)。 请在重置 DataSource 和 DataMember 属性(单独进行设置,或者通过 SetDataBinding 方法设置)之前设置此属性,否则此属性将无效。
该属性不能设置为小于 0 的值。
网格的行标头的宽度。
在选中行或单元格时,这是背景色。
在选中行或单元格时,这是前景色。
提示
请记住,在自定义控件颜色时,如果颜色选择不当(例如,红色和绿色),可能会导致无法访问控件。 要避免此问题,请使用“系统颜色”调色板提供的颜色。
下面的过程假定窗体有一个绑定到数据表的 DataGrid 控件。 有关更多信息,请参见将 Windows 窗体 DataGrid 控件绑定到数据源。
以编程方式设置数据表的表样式和列样式
创建一个新的表样式并设置其属性。
创建一个列样式并设置其属性。
将列样式添加到表样式的列样式集合中。
将表样式添加到数据网格的表样式集合中。
在下面的示例中,将创建新 DataGridTableStyle 的实例,然后对其 MappingName 属性进行设置。
创建 GridColumnStyle 的一个新实例并设置其 MappingName(和其他一些布局和显示属性)。
对于要创建的每个列样式,重复步骤 2 到 6。
下面的示例说明如何创建 DataGridTextBoxColumn 以便在该列中显示一个名称。 另外,将列样式添加到表样式的 GridColumnStylesCollection 中,并将表样式添加到数据网格的 GridTableStylesCollection 中。
Private Sub CreateAuthorFirstNameColumn() ' Add a GridTableStyle and set the MappingName ' to the name of the DataTable. Dim TSAuthors As New DataGridTableStyle() TSAuthors.MappingName = "Authors" ' Add a GridColumnStyle and set the MappingName ' to the name of a DataColumn in the DataTable. ' Set the HeaderText and Width properties. Dim TCFirstName As New DataGridTextBoxColumn() TCFirstName.MappingName = "AV_FName" TCFirstName.HeaderText = "First Name" TCFirstName.Width = 75 TSAuthors.GridColumnStyles.Add(TCFirstName) ' Add the DataGridTableStyle instance to ' the GridTableStylesCollection. myDataGrid.TableStyles.Add(TSAuthors) End Sub
private void addCustomDataTableStyle() { // Add a GridTableStyle and set the MappingName // to the name of the DataTable. DataGridTableStyle TSAuthors = new DataGridTableStyle(); TSAuthors.MappingName = "Authors"; // Add a GridColumnStyle and set the MappingName // to the name of a DataColumn in the DataTable. // Set the HeaderText and Width properties. DataGridColumnStyle TCFirstName = new DataGridTextBoxColumn(); TCFirstName.MappingName = " AV_FName"; TCFirstName.HeaderText = "First Name"; TCFirstName.Width = 75; TSAuthors.GridColumnStyles.Add(TCFirstName); // Add the DataGridTableStyle instance to // the GridTableStylesCollection. dataGrid1.TableStyles.Add(TSAuthors); }
private: void addCustomDataTableStyle() { // Add a GridTableStyle and set the MappingName // to the name of the DataTable. DataGridTableStyle^ TSAuthors = new DataGridTableStyle(); TSAuthors->MappingName = "Authors"; // Add a GridColumnStyle and set the MappingName // to the name of a DataColumn in the DataTable. // Set the HeaderText and Width properties. DataGridColumnStyle^ TCFirstName = gcnew DataGridTextBoxColumn(); TCFirstName->MappingName = "AV_FName"; TCFirstName->HeaderText = "First Name"; TCFirstName->Width = 75; TSAuthors->GridColumnStyles->Add(TCFirstName); // Add the DataGridTableStyle instance to // the GridTableStylesCollection. dataGrid1->TableStyles->Add(TSAuthors); }
请参见
任务
如何:在 Windows 窗体 DataGrid 控件中删除或隐藏列