Devexpress列标题颜色(每列颜色不同),winform c#

本文关键字:颜色 winform 标题 Devexpress | 更新日期: 2023-09-27 18:27:33

我在winform app(c#)中有一个GridViewGridControl,在GridView中有几个列,我想设置标题列的背景。我可以这样做,但它会将所有列更改为相同的颜色。我用了那个代码:

gridcntrActic.LookAndFeel.Style = DevExpress.LookAndFeel.LookAndFeelStyle.Flat;
gridcntrActic.LookAndFeel.UseDefaultLookAndFeel = false; 
gridviewActiv.Appearance.HeaderPanel.Options.UseBackColor = true;
gridviewActiv.Appearance.HeaderPanel.BackColor = System.Drawing.Color.White;

此代码将所有列标题更改为白色。但我想把第一列改成白色,第二列改成红色等等。我该怎么做?

Devexpress列标题颜色(每列颜色不同),winform c#

如果您想将第一列更改为白色,将第二列更改为红色,请更改它。
以下是示例:

gridcntrActic.LookAndFeel.Style = DevExpress.LookAndFeel.LookAndFeelStyle.Flat;
gridcntrActic.LookAndFeel.UseDefaultLookAndFeel = false;
gridviewActiv.Columns[0].AppearanceHeader.Options.UseBackColor = true;
gridviewActiv.Columns[0].AppearanceHeader.BackColor = System.Drawing.Color.White;
gridviewActiv.Columns[1].AppearanceHeader.Options.UseBackColor = true;
gridviewActiv.Columns[1].AppearanceHeader.BackColor = System.Drawing.Color.Red;
//And so on.

参考文档:自定义单个列和带标题的外观

自定义外观也可以指定给各个列和标注栏标头。该技术与上述技术类似。到指定用于绘制单个列的外观设置标头,请使用列的GridColumn.AppearanceHeader属性。带的类似项是GridBand.AppearanceHeader属性。

视图中所有列标题的外观设置由GridViewAppearances.HeaderPanel属性指定。AppearanceHeader属性为各个列标题提供外观设置。

列标题也可以使用GridView.CustomDrawColumnHeader事件进行自定义绘制。

方法1:

  gridControl1.LookAndFeel.Style = DevExpress.LookAndFeel.LookAndFeelStyle.Flat;
  gridControl1.LookAndFeel.UseDefaultLookAndFeel = false; // <<<<<<<<
  gridviewActiv.Columns[0].Appearance.HeaderPanel.Options.UseBackColor = true;
  gridviewActiv.Columns[0].Appearance.HeaderPanel.BackColor = System.Drawing.Color.White;

方法2:

void gridView1_CustomDrawColumnHeader(object sender, ColumnHeaderCustomDrawEventArgs e) {
    if (e.Column == null) return;
    if (e.Column == colGrowth) //condition to paint specific column
    {
        e.Appearance.BackColor = Color.Red;
        e.Handled = true; // must set flag to true to tell grid that it has been customized.
    }
}

源:将样式应用于分组行
示例:

using DevExpress.XtraGrid.Views.Grid;
using DevExpress.XtraGrid.Columns;
using DevExpress.Utils;
private void Form1_Load(object sender, System.EventArgs e) {
   // ... 
   InitStyles();
}
private void InitStyles() {
   GridView View = gridControl1.MainView as GridView;
   // Customize the column headers' appearances. 
   AppearanceObject appCountry = View.Columns["Country"].AppearanceHeader;
   appCountry.BackColor = Color.AntiqueWhite;
   appCountry.BackColor2 = Color.Snow;
   View.Columns["City"].AppearanceHeader.BackColor = Color.LightSalmon;
   // Set the View's painting syle. 
   View.PaintStyleName = "UltraFlat";
}

注意:
当GridControls的LookAndFeel属性设置为Flat、UltraFlat或Style3D值时,可以使用"外观"设置更改列标题的背景色。如果希望更改蒙皮列标题的颜色,则应创建自己的"蒙皮"。另一个解决方案是在CustomDrawColumnHeader事件处理程序中手动绘制列标题。此事件允许您根据需要绘制列标题,因此不依赖于栅格的绘制

订阅事件CustomDrawColumnHeader并将颜色设置为所需的列:

gridView1.CustomDrawColumnHeader += 
    new ColumnHeaderCustomDrawEventHandler(gridView1_CustomDrawColumnHeader);
void gridView1_CustomDrawColumnHeader(object sender, ColumnHeaderCustomDrawEventArgs e) 
{
    if (e.Column == _yourColumn)
    {
        e.Appearance.BackColor = Color.Red;
        e.Handled = true;
    }
}