【问题标题】:Data grid view header Grid color数据网格视图标题 网格颜色
【发布时间】:2011-01-05 07:01:52
【问题描述】:

这是一个 VB .NET 应用程序,我们在 Datagrid 视图中显示 SQL 语句的输出。使用 .NET 2005。

我们需要让网格控件上的标题分隔符与表单上的 GridColor 具有相同的颜色。见下图:

我们尝试查看了 DataGridView 控件的所有属性,发现了一些看起来很有希望的有趣的东西,例如 DataGridViewAdvancedHeaderStyle 和 DataGridViewHeaderBorderStyle,但它们似乎都不允许您更改其颜色。

有谁知道如何在不使用 GDI+ 控件重新制作整个事物的情况下做到这一点?

【问题讨论】:

  • 我看不到图片。只是我的电脑吗?
  • 是的,它可能只是您的计算机。我不认为本网站对谁可以看到和不可以看到其他人发布的图像拥有特定权利。

标签: vb.net datagridview colors separator border-color


【解决方案1】:

我看不到图片,但是玩这些怎么样?

DataGridView.ColumnBordersHeaderStyle
DataGridView.RowBordersHeaderStyle

【讨论】:

  • 框架 2.0 中不存在 ColumnBorderHeaderStyle 最接近的就是 ColumnHeadersBorderStyle,它只是外观的枚举,没有颜色规范。 RowBorderHeaderStyle 包含行标题的属性,我们遇到了列标题的问题......我不相信设置会从一个转移到另一个。
【解决方案2】:

好吧,我从来没有为此找到一个属性,所以我最终创建了一个自定义组件,并重载了 OnPaint 事件处理程序以在现有组件上画一条线。

如果其他人遇到此帖子寻找解决方案,这里是它的代码:

Private Sub CustomDataGridView_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint
    Dim g As Graphics = e.Graphics
    Dim pen As New Pen(Me.GridColor)
    Dim TWidth As Integer = 2
    Dim HeaderWidth As Integer = 0
    If Me.RowHeadersVisible Then
        HeaderWidth = Me.RowHeadersWidth
    End If
    For Each column As DataGridViewColumn In Me.Columns
        Dim x As Integer = HeaderWidth + TWidth - 1
        TWidth += column.Width
        Dim top As Integer = column.HeaderCell.ContentBounds.Top
        Dim bottom As Integer = column.HeaderCell.ContentBounds.Bottom + 1
        pen.Width = 2
        g.DrawLine(pen, x, top, x, bottom)
    Next column
End Sub

【讨论】:

    【解决方案3】:

    要更改数据网格视图中列标题的背景颜色,请为 EnableHeadersVisualStyles 选择 False。然后打开 ColumnHeadersDefaultCellStyle 并选择背景颜色。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多