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

A:

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

1 e.Row.HeaderCell.Value = (e.Row.Index + 1).ToString();//添加行号
2
3 //e.Row.HeaderCell.Value = string.Format("{0}", e.Row.Index + 1);

B:

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

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

按 Ctrl+C 复制代码
按 Ctrl+C 复制代码

B)2):

 1         private void dataGridView1_RowPostPaint(object sender, DataGridViewRowPostPaintEventArgs e)2         {3             var rowIdx = (e.RowIndex + 1).ToString();4             var centerFormat = new StringFormat()5             {6                 Alignment = StringAlignment.Center,7                 LineAlignment = StringAlignment.Center,8             };9             var headerBounds = new Rectangle(e.RowBounds.Left, e.RowBounds.Top, dataGridView1.RowHeadersWidth, e.RowBounds.Height);
10             e.Graphics.DrawString(rowIdx, this.Font, SystemBrushes.ControlText, headerBounds, centerFormat);
11         }

C:

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

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

 1         private void dataGridView1_RowsAdded(object sender, DataGridViewRowsAddedEventArgs e)2         {3 4             for (int i = 0; i < e.RowCount; i++)5             {6                 dataGridView1.Rows[e.RowIndex + i].HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleRight;7                 dataGridView1.Rows[e.RowIndex + i].HeaderCell.Value = (e.RowIndex + i + 1).ToString();8             }9
10             for (int i = e.RowIndex + e.RowCount; i < this.dataGridView1.Rows.Count; i++)
11             {
12                 dataGridView1.Rows[i].HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleRight;
13                 dataGridView1.Rows[i].HeaderCell.Value = (i + 1).ToString();
14             }
15         }

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

 1 private void dataGridView1_RowsRemoved(object sender, DataGridViewRowsRemovedEventArgs e)2         {3             for (int i = 0; i < e.RowCount; i++)4             {5                 dataGridView1.Rows[e.RowIndex + i].HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleRight;6                 dataGridView1.Rows[e.RowIndex + i].HeaderCell.Value = (e.RowIndex + i + 1).ToString();7             }8 9             for (int i = e.RowIndex + e.RowCount; i < this.dataGridView1.Rows.Count; i++)
10             {
11                 dataGridView1.Rows[i].HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleRight;
12                 dataGridView1.Rows[i].HeaderCell.Value = (i + 1).ToString();
13             }
14         }

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

Winform DataGridView控件添加行号相关推荐

  1. winform datagridview控件使用

    最近做项目时,显示查询结果总需要绑定到datagridview控件上显示,总结了给datagridview绑定数据的方式,以及导出datagridview数据到excel表格,如有错误请多指教 1.直 ...

  2. winform datagridview控件设置列标题字体大小无效问题

    在datagridview控件的columnHeadersDefaultCellStyle属性中设置列标题字体样式后,非运行时看有效,运行时则无效,主要是因为datagridview控件放在panel ...

  3. fine ui grid控件添加行号

    grid控件的列中添加如下代码<f:RowNumberField EnablePagingNumber="true" TextAlign="Center" ...

  4. WinForm中关于DataGridView控件的一些应用

    转载于新浪 美林居士 的博客:            blog.sina.com.cn/s/blog_797a56d20101daiw.html4 在.NET4.0中,以表格形式存储的数据通常是Dat ...

  5. C# DataGridView控件动态添加行与列

    DataGridView控件在实际应用中非常实用,特别需要表格显示数据时.可以静态绑定数据源,这样就自动为DataGridView控件添加相应的行.假如需要动态为DataGridView控件添加新行, ...

  6. C#Winform的DataGridView控件使用详解2—DataGridView表格样式设置及表格操作

    C#Winform的DataGridView控件使用详解2-DataGridView表格样式设置及表格操作 DataGridView表格样式设置 DataGridView行序号设置 右键弹出控件表格操 ...

  7. (一)C#Winform导入Excel数据到datagridview控件

    C#Winform导入Excel数据到datagridview控件 #此次导入Excel数据借助了ExcelDataReader插件.(由于我需要的是打开工作簿时能够选择工作表绑定于datagridv ...

  8. Winform实现在DataGridView控件的单元格中添加多个控件

    Winform实现在DataGridView控件的单元格中添加多个控件 背景 实现思路 关键代码 完整代码下载 背景 DataGridView控件的列是支持TextBoxColumn.ComboBox ...

  9. 断开式 DataGridView控件 winform

    断开式 DataGridView控件 winform 引入dgv控件 绑定数据 dgv控件.数据源 = 仓库中的数据表 示例 private void bindDgv() { // 连接字符串Stri ...

最新文章

  1. IBM中国CTO程静:现代CTO是怎样炼成的
  2. Linux配置脚本导出运行,linux服务器部署jar包以及shell脚本的书写
  3. delphi 鼠标获取窗口句柄_Windows窗口自定义,只需WindowTop一键设置
  4. [网络安全自学篇] 五十三.Windows系统安全之Metasploit实现栈溢出攻击及反弹shell原理解析
  5. 第3章 Python 数字图像处理(DIP) - 灰度变换与空间滤波13 - 平滑低通滤波器 -盒式滤波器核
  6. HDR和SDR的区别
  7. Modbus寄存器地址规则
  8. 西餐美食店响应式网站模板
  9. (47)VHDL实现8位奇偶校验电路(for loop语句)
  10. android菜单键选择图标,Android Design
  11. python去重复排序_Python实现删除排序数组中重复项的两种方法示例
  12. 创建WEBPARTS全过程
  13. 不平衡数据集_我们的不平衡数据集
  14. Gradle Guide
  15. mplayer+科大讯飞离线语音包
  16. 《上海堡垒》究竟几何?让我用爬虫一探究竟
  17. 家用电器插头插座外壳防冲击等级试验——IK摆锤冲击试验装置
  18. #import 指令 (C++)
  19. ESP32入门之程序烧录:烧录错误总结
  20. Chemistry Methods | Image2SMILES+: Transformer-Based Molecular Optical Recognition Engine

热门文章

  1. QT的QOpenGLTextureBlitter类的使用
  2. C++对象确定性解析单例模式
  3. springboot 直接转发调用_springboot-过滤器的页面跳转【重定向与请求转发】-异常报错...
  4. freeradius 3.0 mysql_secfree
  5. SpringBoot任务调度案例(学习笔记)
  6. python创建线程
  7. sqlplus登录方式,列出所有表,列出表结构,sqlplus行和列显示设置,别名,空值问题,连接符,DISTINCT
  8. 网站用户访问速度监测分析项目
  9. Oracle日志分类
  10. 处理字符串_11_判断一个字符是否是数字