DataGridView合并单元格 编辑单元格

同事的一个项目需要将DataGridView单元格中的内容分不同颜色显示,想了想只有重绘了。
这种方法还可以用做合并单元格。

参考代码:

private void dataGridView1_CellPainting(object sender, DataGridViewCellPaintingEventArgs e)
        {
            if (e.RowIndex == 0 && e.ColumnIndex >= 0)
            {
                int left = e.CellBounds.Left;
                int top = e.CellBounds.Top;
                int right = e.CellBounds.Right;
                int bottom = e.CellBounds.Bottom;
                e.Graphics.FillRectangle(new SolidBrush(Color.White), e.CellBounds);
                e.Handled = true;
                Brush gridBrush = new SolidBrush(this.dataGridView1.GridColor);
                Pen gridLinePen = new Pen(gridBrush);
                e.Graphics.DrawLine(gridLinePen, right - 1,
                           top, right - 1,
                           bottom - 1);
                e.Graphics.DrawLine(gridLinePen, left,
                           bottom - 1, right,
                           bottom - 1);

                Brush b1 = new SolidBrush(Color.Black);
                e.Graphics.DrawString((String)e.Value, e.CellStyle.Font,
                                        b1, left + 2,
                                        top + 1, StringFormat.GenericDefault);

                Brush b2 = new SolidBrush(Color.Red);
                e.Graphics.DrawString((String)e.Value, e.CellStyle.Font,
                                        b2, left + 2,
                                        top + 10, StringFormat.GenericDefault);
            }

            DataGridViewSelectedCellCollection dgvscc = this.dataGridView1.SelectedCells;
            foreach (DataGridViewCell dgvc in dgvscc)
            {
                    if (e.RowIndex == 0
                        && e.RowIndex == dgvc.RowIndex
                        && e.ColumnIndex == dgvc.ColumnIndex)
                    {
                        int left = e.CellBounds.Left;
                        int top = e.CellBounds.Top;
                        int right = e.CellBounds.Right;
                        int bottom = e.CellBounds.Bottom;
                        // 绘制背景,覆盖单元格区域
                        e.Graphics.FillRectangle(new SolidBrush(Color.FromArgb(10,36,106)), e.CellBounds);
                        
                        // 绘制边框
                        Brush gridBrush = new SolidBrush(this.dataGridView1.GridColor);
                        Pen gridLinePen = new Pen(gridBrush);
                        e.Graphics.DrawLine(gridLinePen, right - 1,
                                   top, right - 1,
                                   bottom - 1);
                        e.Graphics.DrawLine(gridLinePen, left,
                                   bottom - 1, right,
                                   bottom - 1);

                        // 绘制文字
                        Brush b1 = new SolidBrush(Color.White);
                        e.Graphics.DrawString((String)e.Value, e.CellStyle.Font,
                                                b1, left + 2,
                                                top + 1, StringFormat.GenericDefault);

                        Brush b2 = new SolidBrush(Color.White);
                        e.Graphics.DrawString((String)e.Value, e.CellStyle.Font,
                                                b2, left + 2,
                                                top + 10, StringFormat.GenericDefault);
                    }
            }

            e.Handled = true;            

        }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值