如何在数据绑定后为datagridview中的每一行设置渐变颜色

时间:2011-06-20 04:53:39

标签: c# winforms c#-4.0 datagridview

我想在数据绑定后为datagridview中的每一行设置渐变颜色(我的意思是在DataBoundCompleted事件中)

我看到这篇文章,但所有这些都是为了选择一行。我想为每一行设置渐变。

DataGridView, add unique gradient to each Row

How to: Customize the Appearance of Rows in the Windows Forms DataGridView Control

感谢

2 个答案:

答案 0 :(得分:2)

您链接的第二个示例正是您需要的示例。为网格中的每一行触发DataGridView.RowPrePaint事件。

此事件的文档页面上的示例仅自定义呈现所选行,因为它包含以下检查。

// Determine whether the cell should be painted
// with the custom selection background.
if ((e.State & DataGridViewElementStates.Selected) ==
            DataGridViewElementStates.Selected)

删除此检查,您将看到每一行都有自定义背景。

答案 1 :(得分:0)

我不知道这是否能帮助那些在谷歌搜索后登陆这里的人,我基于我在另一个论坛找到的一些vb代码:

using System;
using System.Windows.Forms;
using System.Drawing;

namespace CPS
{
    class gradientGrid : DataGridView
    {

        protected override void PaintBackground(System.Drawing.Graphics graphics, System.Drawing.Rectangle clipBounds, System.Drawing.Rectangle gridBounds)
        {
            base.PaintBackground(graphics, clipBounds, gridBounds);

            System.Drawing.Drawing2D.LinearGradientBrush b = new System.Drawing.Drawing2D.LinearGradientBrush(clipBounds, Color.CadetBlue, Color.AntiqueWhite, System.Drawing.Drawing2D.LinearGradientMode.Horizontal);
            graphics.FillRectangle(b, clipBounds);
        }
    }
}

一旦你将它构建为一个单独的类,它会显示在你的(VS2010)工具箱中,然后你把它放在你的表单上......

此代码适用于整个数据网格视图,因此要为每一行执行此操作,您可以使用 RowPrePaint 事件...