try
{
if (e.RowIndex < 0)
{
RectangleF _rect = e.CellBounds;
Pen _pen = new Pen(Color.Black);
Pen _pen1 = new Pen(Color.Gray);
LinearGradientBrush backBrush = new LinearGradientBrush(_rect, e.CellStyle.BackColor, e.CellStyle.BackColor, 90);
int _col = e.ColumnIndex;
switch (_col)
{
case 0:
e.Graphics.FillRectangle(backBrush, _rect);
e.Graphics.DrawLine(_pen, _rect.Right - 1, _rect.Top, _rect.Right - 1, _rect.Bottom);
e.Graphics.DrawLine(_pen, _rect.Left, _rect.Top, _rect.Left, _rect.Bottom);
break;
//case 1:
//case 2:
//case 10:
//case 11:
//case 12:
//case 13:
case 14:
e.Graphics.FillRectangle(backBrush, _rect);
e.Graphics.DrawLine(_pen, _rect.Right - 1, _rect.Top, _rect.Right - 1, _rect.Bottom);
break;
case 1:
//e.Graphics.FillRectangle(backBrush, _rect);
break;
case 2:
case 4:
case 6:
case 8:
case 10:
case 12:
e.Graphics.FillRectangle(backBrush, new Rectangle(Convert.ToInt32(_rect.X), Convert.ToInt32(_rect.Y), 200, Convert.ToInt32(_rect.Height)));
//画左竖线
e.Graphics.DrawLine(_pen1, _rect.Left - 1, _rect.Top, _rect.Left - 1, _rect.Bottom - 1);
//画中横线
e.Graphics.DrawLine(_pen1, _rect.Left, _rect.Top + (_rect.Height / 2), _rect.Right - 1, _rect.Top + (_rect.Height / 2));
//画右竖线
e.Graphics.DrawLine(_pen1, _rect.Right - 1, _rect.Top + (_rect.Height / 2) + 1, _rect.Right - 1, _rect.Bottom);
break;
case 3:
case 5:
case 7:
case 9:
case 11:
e.Graphics.FillRectangle(backBrush, new Rectangle(Convert.ToInt32(_rect.X), Convert.ToInt32(_rect.Y), Convert.ToInt32(_rect.Width) * 2, Convert.ToInt32(_rect.Height)));
//画中横线
e.Graphics.DrawLine(_pen1, _rect.Left, _rect.Top + (_rect.Height / 2), _rect.Right - 1, _rect.Top + (_rect.Height / 2));
break;
case 13:
e.Graphics.FillRectangle(backBrush, new Rectangle(Convert.ToInt32(_rect.X), Convert.ToInt32(_rect.Y), Convert.ToInt32(_rect.Width) * 2, Convert.ToInt32(_rect.Height)));
//画中横线
e.Graphics.DrawLine(_pen1, _rect.Left, _rect.Top + (_rect.Height / 2), _rect.Right - 1, _rect.Top + (_rect.Height / 2));
//画右竖线
e.Graphics.DrawLine(_pen, _rect.Right - 1, _rect.Top + 1, _rect.Right - 1, _rect.Bottom);
break;
}
e.Graphics.DrawLine(_pen, _rect.Left, _rect.Top, _rect.Right - 1, _rect.Top);
e.Graphics.DrawLine(_pen, _rect.Left, _rect.Bottom - 1, _rect.Right, _rect.Bottom - 1);
if (e.Value != null)
{
StringFormat _Format = new StringFormat();
switch (e.CellStyle.Alignment)
{
case DataGridViewContentAlignment.BottomCenter:
_Format.LineAlignment = StringAlignment.Far;
_Format.Alignment = StringAlignment.Center;
break;
case DataGridViewContentAlignment.BottomLeft:
_Format.LineAlignment = StringAlignment.Far;
_Format.Alignment = StringAlignment.Near;
break;
case DataGridViewContentAlignment.BottomRight:
_Format.LineAlignment = StringAlignment.Far;
_Format.Alignment = StringAlignment.Far;
break;
case DataGridViewContentAlignment.MiddleCenter:
_Format.LineAlignment = StringAlignment.Center;
_Format.Alignment = StringAlignment.Center;
break;
case DataGridViewContentAlignment.MiddleLeft:
_Format.LineAlignment = StringAlignment.Center;
_Format.Alignment = StringAlignment.Near;
break;
case DataGridViewContentAlignment.MiddleRight:
_Format.LineAlignment = StringAlignment.Center;
_Format.Alignment = StringAlignment.Far;
break;
case DataGridViewContentAlignment.NotSet:
_Format.LineAlignment = StringAlignment.Center;
_Format.Alignment = StringAlignment.Near;
break;
case DataGridViewContentAlignment.TopCenter:
_Format.LineAlignment = StringAlignment.Near;
_Format.Alignment = StringAlignment.Center;
break;
case DataGridViewContentAlignment.TopLeft:
_Format.LineAlignment = StringAlignment.Near;
_Format.Alignment = StringAlignment.Near;
break;
case DataGridViewContentAlignment.TopRight:
_Format.LineAlignment = StringAlignment.Near;
_Format.Alignment = StringAlignment.Far;
break;
}
Brush _br;
String _text = e.Value.ToString();
switch (_col)
{
case 2:
case 4:
case 6:
case 8:
case 10:
case 12:
_br = new SolidBrush(e.CellStyle.ForeColor);
e.Graphics.DrawString(_text, e.CellStyle.Font, _br, new RectangleF(_rect.X, _rect.Y + 1 + _rect.Height / 2, _rect.Width, _rect.Height / 2), _Format);

_Format.LineAlignment = StringAlignment.Center;
_Format.Alignment = StringAlignment.Center;
_br = new SolidBrush(e.CellStyle.ForeColor);
e.Graphics.DrawString(_text, e.CellStyle.Font, _br, new RectangleF(_rect.X, _rect.Y, _rect.Width * 3, _rect.Height / 2), _Format);
break;
case 3:
case 5:
case 7:
case 9:
case 11:
case 13:
_br = new SolidBrush(e.CellStyle.ForeColor);
e.Graphics.DrawString(_text, e.CellStyle.Font, _br, new RectangleF(_rect.X, _rect.Y + 1 + _rect.Height / 2, _rect.Width, _rect.Height / 2), _Format);
//写上面
if (_col == 3)
{
_text = "第一个";
}
if (_col == 5)
{
_text = "第二个";
}
else if (_col == 7)
{
_text = "第三个";
}
else if (_col == 9)
{
_text = "第四个";
}
else if (_col == 11)
{
_text = "第五个";
}
else if (_col == 13)
{
_text = "第六个";
}
_Format.LineAlignment = StringAlignment.Center;
_Format.Alignment = StringAlignment.Center;
_br = new SolidBrush(e.CellStyle.ForeColor);
e.Graphics.DrawString(_text, e.CellStyle.Font, _br, new RectangleF(_rect.X - _rect.Width - 20, _rect.Y, _rect.Width * 3, _rect.Height / 2), _Format);
break;
default:
_br = new SolidBrush(e.CellStyle.ForeColor);
e.Graphics.DrawString(_text, e.CellStyle.Font, _br, _rect, _Format);
break;
}
}
e.Handled = true;
}
}
catch (Exception ex)
{

LogHelper.WriteLog(GetType(),ex);
}

DGV表头双行的更多相关文章

  1. table 控制单双行颜色以及鼠标hover颜色 table光棒

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  2. repeater单双行颜色不同,gridview repeater DataList 鼠标经过改变背景颜色

    1.gridview 双击GridView的OnRowDataBound事件: 在后台的GridView1_RowDataBound()方法添加代码,最后代码如下所示: protected void  ...

  3. html table单双行颜色间隔(转载)

    直接上代码: <html> <head> <meta http-equiv="Content-Type" content="text/htm ...

  4. 对FineU框架Grid多表头合计行导出Excel的回顾

    年前用FineUI开发遇到了这样一个问题,Grid多表头合计行不能导出,后面到官方示例找了一下,庆幸的是找到了多表头的导出示例.然后当时为了省事,直接就复制粘贴完事,也没有仔细的研究代码.后来运行一看 ...

  5. css单双行样式

    #random_box li:nth-child(odd) {//双行 background: #fff5c4; } #random_box li:nth-child(even) {//单行 back ...

  6. 问题:CListCtrl如何高亮选中一行 http://zhidao.baidu.com/question/100664911.html 扩展:单行、双行及完成状态的字体等等。。。

    http://zhidao.baidu.com/link?url=BKp05mfOdKbEBh21svQelpVhYjzDkIpYUZay8_3ZLSndTQn5kK0eTwQG8jBvYnwh8US ...

  7. Js实现table单双行交替色

    依稀记得,当初我刚学编程的时候还学过怎么实现表格单双行交替色,现如今早已记不清当时的实现思路,这两天突然想起,没事就自己写了一小段代码,也不知道是否是当年的思路,不过不用纠结这个问题.:) 代码很简单 ...

  8. 奇偶选择器:使用odd和even属性实现表格单双行颜色相间和不同

    一.奇偶选择器 表格在呈现数据的时候我们为了方便观看,而隔行显示不同的颜色,虽然可以用用类选择器 class实现这种效果,但是未免太过麻烦,为了更加简便地表现这种特殊的效果我们需要用到一种特殊的选择器 ...

  9. SQLServer导出查询结果带表头(标题行)

    SQLServer导出查询结果带表头(标题行) 平时我们经常会需要将SQLSERVER查询的结果复制到EXCEL文档中进行分析处理,但是有一件事很头痛,就是复制结果网格的数据到EXCEL之后,都是没有 ...

随机推荐

  1. AJAX跨域解决方案

    从AJAX诞生那天起,XMLHttprequest对象不能跨域请求的问题就一直存在,这似乎是一个很经典的问题了,是由于javascript的同源策略所导致. 解决的办法,大概有如下几种: 1. 使用中 ...

  2. Mysql的视图、存储过程、函数、索引全解析

    视图是查询命令结果构成的一个虚拟表(非真实存在),其本质是[根据SQL语句获取动态的数据集,并为其命名],用户使用时只需使用[名称]即可获取结果集合,并可以当作表来查询使用. 1创建视图 --格式:C ...

  3. [Linux编程] module_param()函数学习笔记

    在读TCP cubic源码中,遇到了module_param(),网上查到的资料如下: 在用户态下编程可以通过main()来传递命令行参数,而编写一个内核模块则可通过module_param()来传递 ...

  4. ArcGIS Engine中数据的加载 (转)

    1.加载Shapefile数据 1 IWorkspaceFactory pWorkspaceFactory; 2 IFeatureWorkspace pFeatureWorkspace; 3 IFea ...

  5. 高质量C++/C编程指南(林锐)

    推荐-高质量C++/C编程指南(林锐) 版本/状态 作者 参与者 起止日期 备注 V 0.9 草稿文件 林锐   2001-7-1至 2001-7-18 林锐起草 V 1.0 正式文件 林锐   20 ...

  6. iOS项目中安装和使用 Cocoapods

    1.首先我们要打开我们的终端: 2.在终端输入 这条命令  gem sources -l 2.1如果是和我是一样的显示,则镜像已添加,无需更改,如果不一样,则需要进行更改 这里输出的如果是 https ...

  7. 关于Jquery中ajax介绍

    jQuery 底层 AJAX 实现.简单易用的高层实现见 $.get, $.post 等.$.ajax() 返回其创建的 XMLHttpRequest 对象.大多数情况下你无需直接操作该函数,除非你需 ...

  8. 逻辑运算符&&和&的区别 ||和|的区别

    A:最终结果一样. B:&& 和 || 有短路作用,左边是false ,右边不执行.

  9. ZYNQ fsbl阶段的调试方法

    以下是从安富利工程师的技术支持的邮件中摘抄的,在此再次对他们表示感谢. 在我们面对客户单板的时候,fsbl阶段的调试多少会有些问题,在这个过程中怎么快速定位客户的问题,并将有效的信息反馈给希望能帮助到 ...

  10. over partition by与group by 的区别

    (本文摘自scottpei的博客) over partition by与group by 的区别 今天看到一个老兄的问题, 大概如下: 查询出部门的最低工资的userid 号 表结构: D号      ...