Winforms 为什么我的DataGridView列没有按应有的方式着色?

Winforms 为什么我的DataGridView列没有按应有的方式着色?,winforms,.net-core,datagridview,Winforms,.net Core,Datagridview,基于,我添加了以下代码,试图使我的单元格/行的基本背景色为黄色,交替的背景色为浅蓝色: dataGridView1.BackgroundColor = System.Drawing.Color.Yellow; dataGridView1.AlternatingRowsDefaultCellStyle.BackColor = System.Drawing.Color.LightBlue; 实际情况是,只有交替/每隔一列受到影响,我不确定颜色是否真的是浅蓝色: 为什么有一半行的背景色仍然是默认的

基于,我添加了以下代码,试图使我的单元格/行的基本背景色为黄色,交替的背景色为浅蓝色:

dataGridView1.BackgroundColor = System.Drawing.Color.Yellow;
dataGridView1.AlternatingRowsDefaultCellStyle.BackColor = System.Drawing.Color.LightBlue;
实际情况是,只有交替/每隔一列受到影响,我不确定颜色是否真的是浅蓝色:

为什么有一半行的背景色仍然是默认的白色

更新 我重新访问了该microsoft页面,并尝试了以下代码:

dataGridView1.DefaultCellStyle.SelectionBackColor = 
    System.Drawing.Color.LightYellow;
dataGridView1.DefaultCellStyle.SelectionForeColor = System.Drawing.Color.Black;
dataGridView1.RowHeadersDefaultCellStyle.SelectionBackColor = 
    System.Drawing.Color.Empty;
…但它只为一个单元格着色,而不是全部,正如它的注释(//为所有单元格设置选择背景色)所说的那样

下面是它现在的样子,使用上面的代码:

添加第三行/最后一行没有任何区别,尽管它有注释“//Set RowHeadersDefaultCellStyle.SelectionBackColor使其默认 //值不会覆盖DataGridView.DefaultCellStyle.SelectionBackColor。“

使用设置默认行颜色。该链接中的示例详细说明了如何执行此操作

DataGridViewRow.BackColor适用于未填充行的区域。

使用设置默认行颜色。该链接中的示例详细说明了如何执行此操作

DataGridViewRow.BackColor适用于未填充行的区域

为什么背景色在一半时间内保持默认白色 吵架

→ 设置这些属性:

dataGridView1.BackgroundColor = System.Drawing.Color.Yellow;
dataGridView1.AlternatingRowsDefaultCellStyle.BackColor = System.Drawing.Color.LightBlue;
您正在定义DataGridView的背景色,它是控件本身的背景色,而不是其单元格的背景色

dataGridView1.DefaultCellStyle.SelectionBackColor = Color.LightYellow;
dataGridView1.DefaultCellStyle.SelectionForeColor = Color.Black;
dataGridView1.RowHeadersDefaultCellStyle.SelectionBackColor = Color.Empty;
→ 这些其他属性,以及,设置选定时单元格的颜色,而不是由DataGridView的常规属性确定的正常状态。所有其他样式都继承自此(请参见重要注释)

DefaultCellStyle
可以使用其他属性重写,这些属性可以重新定义一些或所有常规属性:

dataGridView1.BackgroundColor = System.Drawing.Color.Yellow;
dataGridView1.AlternatingRowsDefaultCellStyle.BackColor = System.Drawing.Color.LightBlue;

  • 重新定义行中所有单元格的某些样式。其他样式和更通用的特性可以应用于使用该特性的所有行


  • 覆盖
    DefaultCellStyle
    RowsDefaultCellStyle
    以设置交替行的背景色。它可以被以下内容覆盖:


  • 替代行的样式。可由以下内容覆盖:

  • 设置单元格的特定样式

另见:

重要提示
样式越具体,在显示大量行时就越可能影响DataGridView的性能(大意味着在滚动网格时,您会注意到图形中的某种形式的小故障和延迟)。由于常规
DefaultCellStyle
用于确定单元格的显示方式,因此设置每行或单元格的样式会导致控件读取并设置每行或单元格的样式,从而重新定义默认样式。
这项活动当然会使演示变得复杂。当与测量所有单元格的自动列大小调整相结合时,性能会受到严重影响

要在使用
AlternatingRowsDefaultCellStyle
时设置行的默认背景色,可以设置
DataGridView.DefaultCellStyle
DataGridView.RowsDefaultCellStyle

选择哪一个取决于DataGridView的设计

如果需要指定此属性来定义网格的常规方面,可以使用
DefaultCellStyle

[DataGridView].DefaultCellStyle.BackColor = Color.Yellow;
或者
RowsDefaultCellStyle
,如果
DefaultCellStyle
基本属性(前景色、背景色、字体等)是从DataGridView的父级继承的,并且您需要在每行重写此行为,因为已经指定了
AlternatingRowsDefaultCellStyle
重写

[DataGridView].RowsDefaultCellStyle.BackColor = Color.Yellow;
因此,如果设置
DefaultCellStyle
可以在您的情况下工作,请使用此选项,而不是
RowsDefaultCellStyle
(更具体)

这里有更多信息

为什么背景色在一半时间内保持默认白色 吵架

→ 设置这些属性:

dataGridView1.BackgroundColor = System.Drawing.Color.Yellow;
dataGridView1.AlternatingRowsDefaultCellStyle.BackColor = System.Drawing.Color.LightBlue;
您正在定义DataGridView的背景色,它是控件本身的背景色,而不是其单元格的背景色

dataGridView1.DefaultCellStyle.SelectionBackColor = Color.LightYellow;
dataGridView1.DefaultCellStyle.SelectionForeColor = Color.Black;
dataGridView1.RowHeadersDefaultCellStyle.SelectionBackColor = Color.Empty;
→ 这些其他属性,以及,设置选定时单元格的颜色,而不是由DataGridView的常规属性确定的正常状态。所有其他样式都继承自此(请参见重要注释)

DefaultCellStyle
可以使用其他属性重写,这些属性可以重新定义一些或所有常规属性:

dataGridView1.BackgroundColor = System.Drawing.Color.Yellow;
dataGridView1.AlternatingRowsDefaultCellStyle.BackColor = System.Drawing.Color.LightBlue;

  • 重新定义行中所有单元格的某些样式。其他样式和更通用的特性可以应用于使用该特性的所有行


  • 覆盖
    DefaultCellStyle
    RowsDefaultCellStyle
    以设置交替行的背景色。它可以被以下内容覆盖:


  • 替代行的样式。可由以下内容覆盖:

  • 设置单元格的特定样式

另见:

重要提示
样式越具体,在显示大量行时就越可能影响DataGridView的性能(大意味着在滚动网格时,您会注意到图形中的某种形式的小故障和延迟)。由于常规
DefaultCellStyle
用于确定单元格的显示方式,因此设置每行或单元格的样式会导致控件读取并设置每行或单元格的样式,从而重新定义默认样式。
这项活动当然会使演示变得复杂。当与自动立柱连接时