【问题标题】:DatGridView Header Cell's Background ColorDataGridView 标题单元格背景颜色
【发布时间】:2014-02-27 23:59:51
【问题描述】:

我想获取 DataGridView 标题单元格的背景颜色,我做了一个技巧,但它给了我空白和 RGB = 0,0,0

我试过这段代码:

 Color cl = dataGridView1.Columns["<Column>"].HeaderCell.Style.BackColor; //<AnyColumn>

我必须将标题单元格的背景重新绘制成与重新绘制大小修改之前相同的颜色。

请提出解决方案,我已经搜索了很多但没有有用的帮助

【问题讨论】:

  • 看来您在GridView 标记中使用了CssClass。我认为如果您在标记中使用HeaderCell.Style.BackColor,您可以将其取回。
  • 我的问题是关于 >net C#,VB.Net WinForms 相关,所以我需要解决方案
  • @Iqbal,在 Windows 形式中,我们没有 aspx
  • @Arshad 对不起我的错误。

标签: c# datagridview colors paint


【解决方案1】:

DataGridView 使用样式继承,因此除非单个标题单元格与默认值不同,否则其 BackColor 将设置为 Color.Empty

改用ColumnHeadersDefaultCellStyle.BackColor 属性。

请注意,当 EnableHeadersVisualStyles 设置为 true(默认值)时,该值将被忽略,并且将使用视觉样式渲染器绘制标题。

【讨论】:

    【解决方案2】:

    经过一番努力,我终于写下了代码并提出了一些建议 它是一个通用代码,可以在 C# WinForm 的任何网格的绘制方法中调用,将网格、列的名称和绘制图形对象传递给它

    我添加了一个大小为 4 的填充矩形,从上一列的 Right-2 开始到下一列的 Left+2 ,所以它隐藏了垂直条

    Public Sub VerticalBarHide(ByVal grd As KryptonExtendedGrid, ByVal colname As String(), ByVal e As System.Drawing.Graphics)
        Dim rectHeader As Rectangle
        grd.EnableHeadersVisualStyles = False
        Dim bgColor As Color
        bgColor = grd.ColumnHeadersDefaultCellStyle.BackColor
        For Each name As String In colname
            rectHeader = grd.GetCellDisplayRectangle(grd.Columns(name).Index, -1, True)
            rectHeader.X = rectHeader.X + rectHeader.Width - 2
            rectHeader.Y += 1
            rectHeader.Width = 2 * 2
            rectHeader.Height -= 2
            e.FillRectangle(New SolidBrush(bgColor), rectHeader)
        Next
    
    End Sub
    

    【讨论】:

      【解决方案3】:

      我发现这很好用。你需要设置EnableHeadersVisualStyles=fasle; 两种方式我都测试过:

      dataGridView1.EnableHeadersVisualStyles = false;
      
      DataGridViewColumn dataGridViewColumn = dataGridView1.Columns["Column1"];
      dataGridViewColumn.HeaderCell.Style.BackColor = Color.Magenta;
      dataGridViewColumn.HeaderCell.Style.ForeColor = Color.Yellow;
      
      Color cl = dataGridViewColumn.HeaderCell.Style.BackColor;
      //or   
      Color cl2 = dataGridView1.Columns["Column1"].HeaderCell.Style.BackColor;
      

      【讨论】:

      • 它很好,当我们“dataGridView1.EnableHeadersVisualStyles = false;”但问题就在那里,它给出的值是 0,0,0,0 表示空
      • @Bradley Smith:所以我在禁用它的 Visual-Style 属性“Color cl = dataGridView1.ColumnHeadersDefaultCellStyle.BackColor;”后使用了这个属性我已经成功实现了
      猜你喜欢
      • 2014-10-08
      • 2013-04-12
      • 2016-05-27
      • 2015-09-29
      • 2018-06-15
      • 2022-12-12
      • 2015-11-29
      • 1970-01-01
      • 2011-10-31
      相关资源
      最近更新 更多