最近使用VB2005里的Datagridview控件做一个小程序,希望能在表格中显示行号,在网上搜索半天,网友提供的方法主要有两种:
1、使用通过textrenderer.drawtext在行的标题位置绘制文本....
(俺是菜鸟,看着这个方法都觉得有点烦,虽然大虾们提供的程序行数并不多,但实现原理还是有点复杂)
2、通过在Datagridview控件的RowsPostpaint事件中增加处理代码,遍历Datagridview的每一行,通过在行的HeaderCell里写入行号实现。
个人觉得上两种方法都有点复杂,方法一没有使用Datagridview本身的功能,方法二经常需要遍历Datagridview的每一行,如果行数太多的话肯定效率不会高。
在上述方法的启示下,我找到了Datagridview的RowStateChanged事件,只需在该事件处理程序中加上一行代码即可为Datagridview显示行号了,代码如下:
e.Row.HeaderCell.Value = (e.Row.Index + 1).ToString
不过我的方法还有个问题,如果插入和删除行号,后续行的行号不会相应变动,于是我通过在Datagridview的RowsAdded和RowsRemoved事件处理程序中加入了如下代码:
Dim longRow As Long
For longRow = e.RowIndex + e.RowCount - 1 To DataGridProjects.Rows.GetLastRow(DataGridViewElementStates.Displayed)
DataGridProjects.Rows(longRow).HeaderCell.Value = (longRow + 1).ToString
Next
请注意,上述代码中仅对已在屏幕显示的行的行号进行了修改,不像前述方法一样需要遍历控件的每一行!
经测试,该方法完美解决了Datagridview的行号显示问题,因本人初学,也可能存在更为简单的解决方法没能通过网络搜到,仅将我的方法贴出来供大家探讨,希望高手多多批评指正!
郑州小两口下班没事在家赚钱,半年后存款惊人 广告 雅宁投资 · 顶新
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请
点击举报。