【问题标题】:Changing background color of each cell in Data Grid更改数据网格中每个单元格的背景颜色
【发布时间】:2012-08-20 20:01:02
【问题描述】:

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

这是我的代码:

http://pastebin.com/WNBReUys

【问题讨论】:

  • FormattingApplied 期间有什么原因不能使用 DefaultCellStyle 或设置样式?您不需要为此进行自定义绘画。
  • @DavidHall 原因是这是一个免费软件的片段,它允许我以特定格式打印 DataGrids,而这部分免费软件就是这样编写的......我只是通过我的 Datagrid 控件给它,它为我处理打印

标签: vb.net winforms printing datagridview


【解决方案1】:

打印背景色的方案与钢笔方案类似,只是需要使用画笔,通常是SolidBrush

Dim brushColor as New SolidBrush(someColor)

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

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

【讨论】:

  • 非常感谢
【解决方案2】:

我使用以下代码更改 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-30
    • 1970-01-01
    • 1970-01-01
    • 2011-12-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多