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. My tool chain in CentOS 7

    - Git Client SmartGit http://www.linuxlinks.com/article/20120129035558195/GitClients.html candidates ...

  2. ld.so.conf 和 ldconfig

    1. 查看执行文件的链接库 ldd 例子: # ldd /sbin/sln not a dynamic executable “not a dynamic executable”是 ldd 说明 sl ...

  3. asp.net webform 中使用Microsoft ASP.NET Web Optimization压缩js及css

    使用静态资源压缩可以合并静态资源文件减少客户端请求数量,压缩文件大小,减少网络流量的损耗. 注:只有通过web.config关闭调试功能,压缩才会生效 <system.web> <c ...

  4. 在ANSYS WORKBENCH中使用APDL命令的例子

    如何在workbench中使用command? 如何在ansys workbench中插入apdl? 如何在ansys workbench中使用复杂载荷? 答案在APDL,他可以实现函数化的载荷,如岁 ...

  5. robocopy 命令小结

    robocopy "C:\dira" "J:\dira" /E /COPYALL /XJ /XD "C:\dira\dir1" " ...

  6. 【VB6】使用VB6创建和访问Dom树【爬虫基础知识 】

    使用VB6创建和访问Dom树 关键字:VB,DOM,HTML,爬虫,IHTMLDocument 我们知道,在VB中一般大家会用WebBrowser来获取和操作dom对象. 但是,有这样一种情形,却让我 ...

  7. bottlepy template

    bottle template usage 1 example 使用bottle模板,最简单的方法是使用template函数或view装饰器 1.1 template 函数 例子如下: from bo ...

  8. Python Quick list dir

    昨天 Python释放了 3.5 ,添加了 os.scandir 根据文档该API比os.listdir快Docs which speeds it up by 3-5 times on POSIX s ...

  9. C#泛型代理、泛型接口、泛型类型、泛型方法

    //http://www.cnblogs.com/JeffreySun/archive/2012/11/14/2770211.html //http://www.baqima.com/a/2628.h ...

  10. C# Socket简单例子(服务器与客户端通信)

    这个例子只是简单实现了如何使用 Socket 类实现面向连接的通信. 注意:此例子的目的只是为了说明用套接字写程序的大概思路,而不是实际项目中的使用程序.在这个例子中,实际上还有很多问题没有解决,如消 ...