更改数据网格中每个单元格的背景颜色

时间:2012-08-20 20:01:03

标签: vb.net winforms printing datagridview

在我弄清楚如何使用RGB值更改不同单元格的边框颜色以生成随机颜色之后,我现在也想要更改每个单元格的背景颜色。这是DataGridView。下面是我的相关代码,允许我更改单元格边框颜色,现在该代码中的某处可以改变每个单元格的背景颜色,但我不熟悉此代码,因为它来自免费软件。有谁知道我必须在这段代码中改变什么来影响每个单元格的背景颜色?

这是我的代码:

http://pastebin.com/WNBReUys

2 个答案:

答案 0 :(得分:0)

打印背景颜色的解决方案类似于笔解决方案,除非您需要使用画笔,通常是SolidBrush

Dim brushColor as New SolidBrush(someColor)

e.Graphics.FillRectangle(brushColor ,_
                         New Rectangle(ColumnLeft(ColPage, ColAt), _
                                       tmpTop, _
                                       ColumnWidth(ColPage, ColAt), _
                                       CellHeight))

请注意,由于您要在此矩形上绘制文本和其他图形,因此您可能希望先在所有其他图形之前绘制背景颜色。 (否则,您最终只会得到一个没有文字的纯色矩形。)

答案 1 :(得分:0)

我使用以下代码更改DataGrid BackColor。 通常,您将数组,表或数据集指定为DataGrid的DataSource。所以,我在我的DataTable中循环,这是我的数据源,然后查找我想要更改的行的索引。

 Private Sub DataGridForm_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    dgr1.DataSource = TimeDifftbl
    dgr1.PreferredColumnWidth = 250
    Dim cellText As String
    Dim dr As DataRow
    For n As Integer = 0 To TimeDifftbl.Rows.Count - 1
        dr = TimeDifftbl.Rows(n)
        cellText = dr.Item(2)
        If cellText = "Tot. RunTime" Then
            dgr1.CurrentRowIndex = n
            dgr1.Select(n)
            dgr1.SelectionBackColor = BackColor.LightGray
        End If
    Next

End Sub