Datagridview 列 headers 以编程方式分配颜色,但程序运行时未显示相同颜色
Datagridview column headers assigned colour programatically, but not showing the same colour when the program runs
我有动态创建的数据网格视图,它使用一组 RGB 颜色为 header 着色。当我设置行 header 背景颜色时,它工作正常,但是当我尝试设置列 header 背景颜色时,它只显示数组中的第三种颜色,即使它使用的是正确的代码中的颜色和行 header 使用相同的索引。
这是用于设置颜色的代码
grid.EnableHeadersVisualStyles = false;
grid.RowHeadersDefaultCellStyle.BackColor = Database.colours[colourIndex];
grid.ColumnHeadersDefaultCellStyle.BackColor = Database.colours[colourIndex];
Console.WriteLine("Column header colour: " + grid.ColumnHeadersDefaultCellStyle.BackColor);
Console.WriteLine("Colour array value: " + Database.colours[colourIndex]);
colourIndex++;
这是控制台输出的一部分。它说BackColor在我分配后是正确的,但是当我运行程序时它是不同的。 This 就是这样。行 header 可以很好地循环显示颜色,但列 header 都默认为颜色 [2](蓝色)。
Column header colour: Color [A=255, R=131, G=214, B=129]
Colour array value: Color [A=255, R=131, G=214, B=129]
Column header colour: Color [A=255, R=133, G=215, B=233]
Colour array value: Color [A=255, R=133, G=215, B=233]
Column header colour: Color [A=255, R=99, G=161, B=235]
Colour array value: Color [A=255, R=99, G=161, B=235]
这是颜色数组
public static readonly Color[] colours = {
Color.FromArgb(131, 214, 129) // green
, Color.FromArgb(133, 215, 233) // cyan
, Color.FromArgb(99, 161, 235) // blue
, Color.FromArgb(175, 133, 233) // purple
, Color.FromArgb(255, 115, 112) // red
, Color.FromArgb(235, 166, 106) // orange
, Color.FromArgb(230, 212, 111) // yellow
};
您可以像这样设置 header 单元格的背景颜色
private void SetHeaderColumnColors(DataGridView dgv)
{
dgv.EnableHeadersVisualStyles = false;
for (int i = 0; i < dgv.Columns.Count; i++) {
dgv.Columns[i].HeaderCell.Style.BackColor = colours[i];
}
}
请注意,网格的 EnableHeadersVisualStyles
必须设置为 false
才能使自定义颜色可见。
我有动态创建的数据网格视图,它使用一组 RGB 颜色为 header 着色。当我设置行 header 背景颜色时,它工作正常,但是当我尝试设置列 header 背景颜色时,它只显示数组中的第三种颜色,即使它使用的是正确的代码中的颜色和行 header 使用相同的索引。
这是用于设置颜色的代码
grid.EnableHeadersVisualStyles = false;
grid.RowHeadersDefaultCellStyle.BackColor = Database.colours[colourIndex];
grid.ColumnHeadersDefaultCellStyle.BackColor = Database.colours[colourIndex];
Console.WriteLine("Column header colour: " + grid.ColumnHeadersDefaultCellStyle.BackColor);
Console.WriteLine("Colour array value: " + Database.colours[colourIndex]);
colourIndex++;
这是控制台输出的一部分。它说BackColor在我分配后是正确的,但是当我运行程序时它是不同的。 This 就是这样。行 header 可以很好地循环显示颜色,但列 header 都默认为颜色 [2](蓝色)。
Column header colour: Color [A=255, R=131, G=214, B=129]
Colour array value: Color [A=255, R=131, G=214, B=129]
Column header colour: Color [A=255, R=133, G=215, B=233]
Colour array value: Color [A=255, R=133, G=215, B=233]
Column header colour: Color [A=255, R=99, G=161, B=235]
Colour array value: Color [A=255, R=99, G=161, B=235]
这是颜色数组
public static readonly Color[] colours = {
Color.FromArgb(131, 214, 129) // green
, Color.FromArgb(133, 215, 233) // cyan
, Color.FromArgb(99, 161, 235) // blue
, Color.FromArgb(175, 133, 233) // purple
, Color.FromArgb(255, 115, 112) // red
, Color.FromArgb(235, 166, 106) // orange
, Color.FromArgb(230, 212, 111) // yellow
};
您可以像这样设置 header 单元格的背景颜色
private void SetHeaderColumnColors(DataGridView dgv)
{
dgv.EnableHeadersVisualStyles = false;
for (int i = 0; i < dgv.Columns.Count; i++) {
dgv.Columns[i].HeaderCell.Style.BackColor = colours[i];
}
}
请注意,网格的 EnableHeadersVisualStyles
必须设置为 false
才能使自定义颜色可见。