DataGridView 应用(二)显示行号,合并单元格

DataGridView 应用(二)显示行号,合并单元格 2008年04月16日 星期三 14:45        /// <summary>       

/// 显示行号        /// </summary>       

private void dataGridView1_RowPostPaint(object sender, DataGridViewRowPostPaintEventArgs e)       

 {           

System.Drawing.Rectangle rectangle = new System.Drawing.Rectangle(e.RowBounds.Location.X,e.RowBounds.Location.Y,dataGridView1.RowHeadersWidth - 4,e.RowBounds.Height);            

TextRenderer.DrawText(e.Graphics, (e.RowIndex + 1).ToString(),                dataGridView1.RowHeadersDefaultCellStyle.Font,                rectangle,                dataGridView1.RowHeadersDefaultCellStyle.ForeColor,                TextFormatFlags.VerticalCenter | TextFormatFlags.Right);        }

//---------------------------------------------------------------------------------------------------------------------------------       

/// <summary>        /// 合并单元格        /// </summary>       

private void dataGridView1_CellPainting(object sender, DataGridViewCellPaintingEventArgs e)      

  {          

// 对第1列和第二列相同单元格进行合并           

if (e.ColumnIndex == 0 && e.RowIndex != -1 || e.ColumnIndex == 1 && e.RowIndex != -1)          

  {               

 Brush gridBrush = new SolidBrush(this.dgvContract.GridColor);               

SolidBrush backColorBrush = new SolidBrush(e.CellStyle.BackColor);                                   

using (Pen gridLinePen = new Pen(gridBrush))                   

{                       

// 清除单元格                       

 e.Graphics.FillRectangle(backColorBrush, e.CellBounds);                        

// 画 Grid 边线(仅画单元格的底边线和右边线)                       

 //    如果下一行和当前行的数据不同,则在当前的单元格画一条底边线                       

 if (e.RowIndex < dgvContract.Rows.Count - 1 &&                         dataGridView1.Rows[e.RowIndex + 1].Cells[e.ColumnIndex].Value.ToString() !=                         e.Value.ToString())                            e.Graphics.DrawLine(gridLinePen, e.CellBounds.Left,                            e.CellBounds.Bottom - 1, e.CellBounds.Right - 1,                            e.CellBounds.Bottom - 1);                       

// 画右边线                        e.Graphics.DrawLine(gridLinePen, e.CellBounds.Right - 1,                            e.CellBounds.Top, e.CellBounds.Right - 1,                            e.CellBounds.Bottom);                        

// 画(填写)单元格内容,相同的内容的单元格只填写第一个                       

if (e.Value != null)                       

{                           

 if (e.RowIndex > 0 &&                             dataGridView1.Rows[e.RowIndex - 1].Cells[e.ColumnIndex].Value.ToString() ==                             e.Value.ToString())                            { }                           

else                           

{                                e.Graphics.DrawString((String)e.Value, e.CellStyle.Font,                                    Brushes.Black, e.CellBounds.X + 2,                                    e.CellBounds.Y + 5, StringFormat.GenericDefault);                           

 }                       

}                       

e.Handled = true;                  

}           

 }       

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值