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. (转)WCF开发框架形成之旅---WCF的几种寄宿方式

    WCF寄宿方式是一种非常灵活的操作,可以在IIS服务.Windows服务.Winform程序.控制台程序中进行寄宿,从而实现WCF服务的运行,为调用者方便.高效提供服务调用.本文分别对这几种方式进行详 ...

  2. SQL: ROW_NUMBER

  3. Cacti监控Centos抓包unreachable - admin prohibited

    :: 抓包发现总是有这个出现,而且是跟在GetRequest后面. 打开iptables配置: 最开始网上找的配置语句是这个, -A INPUT -p udp -m udp --sport -j AC ...

  4. 【HOW】如何允许编辑用户配置文件属性

    在自定义用户配置文件属性后会发现,通过属性本身的配置页面,只能允许用户修改自己的属性,而管理员无法修改其他用户的属性.若要允许管理员在用户信息页面修改用户配置文件属性,可通过如下操作实现: 1. 进入 ...

  5. linux命令-dd {拷贝并替换}

    一 命令解释: dd:用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换. 注意:指定数字的地方若以下列字符结尾,则乘以相应的数字:b=512:c=1:k=1024:w=2 参数注释: if=文 ...

  6. 动手学servlet(六) 过滤器和监听器

     过滤器(Filter) 过滤器是在客户端和请求资源之间,起一个过滤的作用,举个例子,比如我们要请求admin文件夹下的index.jsp这个页面,那么我们可以用一个过滤器,判断登录用户是不是管理员 ...

  7. OS X升级El Capitan后,git difftool无法打开diffmerge的解决方法

    在git项目下执行git difftool,出现如下报错 /Library/Developer/CommandLineTools/usr/libexec/git-core/mergetools/dif ...

  8. 逆向分析AHpack

    从暑假开始逆向研究也有一个半月了,今晚分析了一个压缩壳,第一次脱离书本逆向一个程序,放上来纪念一下. 其实像这种壳完全可以esp定律秒掉的,之所以分析它,是因为我想知道所谓IAT修复具体是怎么个算法, ...

  9. 【整理】C#文件操作大全(SamWang)<转>

    文件与文件夹操作主要用到以下几个类: 1.File类: 提供用于创建.复制.删除.移动和打开文件的静态方法,并协助创建 FileStream 对象. msdn:http://msdn.microsof ...

  10. 委托、IOC全知道

    话说写代码已有数年,曾经花了很多时间,看了很多大牛的文章也是不能参透,日思夜想都没有理解的概念,通过不断的实践与学习,回过头来再看,总算有了一个清晰的理解与认识,也看到一句话说,最好的学习就是把别人教 ...