有很多种方法,这里介绍三种:

A:

控件的RowStateChanged事件中添加,RowStateChanged事件是在行的状态更改(例如,失去或获得输入焦点)时发生的事件:

 e.Row.HeaderCell.Value = (e.Row.Index + ).ToString();//添加行号

 //e.Row.HeaderCell.Value = string.Format("{0}", e.Row.Index + 1);

B:

使用控件的RowPostPaint事件,RowPostPaint事件是在绘制 System.Windows.Forms.DataGridViewRow (所有单元格绘制,执行了行绘制之后)发生的事件,不过使用RowPostPaint事件这种方法在数据量很大的时候性能比较差,每次滚动数据都会触发RowPostPaint事件,绘制行号。

(主要利用TextRenderer.DrawText()方法,使用指定的设备上下文、字体、颜色和格式说明在指定界限中绘制指定文本。)

         private void dataGridView1_RowPostPaint(object sender, DataGridViewRowPostPaintEventArgs e)
{
//添加行号
System.Drawing.Rectangle rectangle = new Rectangle(e.RowBounds.Location.X, e.RowBounds.Y, this.dataGridView1.RowHeadersWidth - , e.RowBounds.Height);
TextRenderer.DrawText(e.Graphics, (e.RowIndex + ).ToString(), this.dataGridView1.RowHeadersDefaultCellStyle.Font, rectangle, this.dataGridView1.RowHeadersDefaultCellStyle.ForeColor, TextFormatFlags.VerticalCenter | TextFormatFlags.Right);//”TextFormatFlags.VerticalCenter | TextFormatFlags.Right“中“|”有增加的作用,此处添加了两种文本字符格式样式
//this.dataGridView1.RowHeadersDefaultCellStyle.BackColor = Color.FromArgb(192, 192, 255);//行标题单元格BackColor
//this.dataGridView1.RowHeadersDefaultCellStyle.BackColor = SystemColors.Control;
}

B)2):

         private void dataGridView1_RowPostPaint(object sender, DataGridViewRowPostPaintEventArgs e)
{
var rowIdx = (e.RowIndex + ).ToString();
var centerFormat = new StringFormat()
{
Alignment = StringAlignment.Center,
LineAlignment = StringAlignment.Center,
};
var headerBounds = new Rectangle(e.RowBounds.Left, e.RowBounds.Top, dataGridView1.RowHeadersWidth, e.RowBounds.Height);
e.Graphics.DrawString(rowIdx, this.Font, SystemBrushes.ControlText, headerBounds, centerFormat);
}

C:

在控件的RowsAdded事件和RowsRemoved事件中添加代码。

RowsAdded事件是 在向 System.Windows.Forms.DataGridView 中添加新行之后发生。

         private void dataGridView1_RowsAdded(object sender, DataGridViewRowsAddedEventArgs e)
{ for (int i = ; i < e.RowCount; i++)
{
dataGridView1.Rows[e.RowIndex + i].HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleRight;
dataGridView1.Rows[e.RowIndex + i].HeaderCell.Value = (e.RowIndex + i + ).ToString();
} for (int i = e.RowIndex + e.RowCount; i < this.dataGridView1.Rows.Count; i++)
{
dataGridView1.Rows[i].HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleRight;
dataGridView1.Rows[i].HeaderCell.Value = (i + ).ToString();
}
}

RowsRemoved事件是 在从 System.Windows.Forms.DataGridView 中删除一行或多行时发生。

 private void dataGridView1_RowsRemoved(object sender, DataGridViewRowsRemovedEventArgs e)
{
for (int i = ; i < e.RowCount; i++)
{
dataGridView1.Rows[e.RowIndex + i].HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleRight;
dataGridView1.Rows[e.RowIndex + i].HeaderCell.Value = (e.RowIndex + i + ).ToString();
} for (int i = e.RowIndex + e.RowCount; i < this.dataGridView1.Rows.Count; i++)
{
dataGridView1.Rows[i].HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleRight;
dataGridView1.Rows[i].HeaderCell.Value = (i + ).ToString();
}
}

注:DataGridView控件的RowsHeaderWidthSizeMode属性可以设置如何调整行标题宽度,设置为AutoSizeToAllHeaders或者AutoSizeToDisplayedHeaders,会自动设置宽度不会出现行指示符挤压行号的情况。

最新文章

  1. 【原创经验分享】WCF之消息队列
  2. css pre标签
  3. php +ajax
  4. NetBIOS与Winsock编程接口
  5. [ucgui] 对话框7——按钮触发与模式窗口
  6. Understanding the RelationshipType Enumeration [AX 2012]
  7. 从一个乘法来分析C语言
  8. PHP中文汉字验证码
  9. bzoj 1042: [HAOI2008]硬币购物 dp+容斥原理
  10. 域名注册商namesilo价格便宜,赠送whois保护,最新优惠码:geekradio
  11. 腾讯云安全:移动 APP 安全行业报告
  12. 原生JS实现banner图的滚动与跳转
  13. echart 百度地图实现效果
  14. 在Html页面中调用ajax代码
  15. Thinkphp3.1 php 链接SqlServer
  16. 学会Git玩转GitHub全
  17. 项目启动一直死循环 DruidDataSource.init 方法
  18. gradle 汉化
  19. Android设置常见控件点击效果
  20. jenkins 启动slave,出现com.sun.deploy.net.FailedDownloadException: Unable to load resource: http://127.0.0.1:8080/jnlpJars/remoting.jar

热门文章

  1. Markdown入门 学习
  2. sqlserver无ldf日志文件附加的方法(数据库没有完全关闭,无法重新生成日志)
  3. windows2003 IIS6.0右键属性没有asp.net选项卡的解决办法
  4. ios启动载入启动图片
  5. HDU 2795 Billboard(区间求最大值的位置update的操作在query里做了)
  6. Integration Services创建ETL包
  7. 跨平台编程:关于VS和QT那些事
  8. (dp)343. Integer Break
  9. 转(Response.WriteFile 无法下载大文件解决方法)
  10. Python中__init__方法