DataGrid(WinForm)显示行号最简单的方法
来源:互联网 发布:最励志的一句话知乎 编辑:程序博客网 时间:2024/06/06 02:05
同样是重载OnPaint 方法,但是方法应该是比较巧妙的!而且不用担心标题是不是有显示,也不用去计算坐标,很方便的说!
protected override void OnPaint(PaintEventArgs e)
{
base.OnPaint(e);
if(this.DataSource!=null)
{
if( this.VisibleRowCount == 0 )return;
Rectangle currRct;
int iRowCount = this.VisibleRowCount; //这边有个错误 VisibleRowCount 仅限于可见的行
string sText = "";
int nowY = 0;
for( int i = 0 ; i < iRowCount ; i++ )
{
currRct = (Rectangle)this.GetCellBounds( i, 0 );
nowY = currRct.Y + 2;
sText = string.Format( " {0}", i+1 );
e.Graphics.DrawString( sText, this.Font, new SolidBrush(Color.Black), 10, nowY );
}
}
}
===================================================================
上文发生错误的地方在于this.VisibleRowCount ,由VisibleRowCount 仅取到可见的行数,所以当行数超过了可视范围时,其余的行号就没有画出来了,那这个取行数的方法现在已做更正,哪位朋友如果说有更好的方法可以一起讨论.
更正后的实现方法如下:
===================================================================
using System;
using System.Data;
using System.Drawing;
using System.Windows.Forms;
namespace MyControls
{
public class MyDataGrid : DataGrid
{
protected override void OnPaint(PaintEventArgs e)
{
base.OnPaint(e);
DrawRowNumber( e );
}
private void DrawRowNumber( PaintEventArgs e )
{
if( this.DataSource!=null && this.VisibleRowCount != 0 )
{
Rectangle currRct;
int iRowCount = 0;
switch( this.DataSource.GetType().ToString() )
{
case "System.Data.DataSet": //绑定对象为DataSet
iRowCount = ((DataSet)this.DataSource).Tables[this.DataMember].Rows.Count;
break;
case "System.Data.DataTable": //绑定对象为DataTable
iRowCount = ((DataTable)this.DataSource).Rows.Count;
break;
case "System.Data.DataView": //绑定对象为DataView
iRowCount = ((DataView)this.DataSource).Count;
break;
default: //其他的对象
return;
}
for( int i = 0 ; i < iRowCount ; i++ )
{
currRct = (Rectangle)this.GetCellBounds( i, 0 );
e.Graphics.DrawString( string.Format( " {0}", i+1 ) , this.Font, new SolidBrush(Color.Black), 10, currRct.Y + 2 );
}
}
}
}
- DataGrid(WinForm)显示行号最简单的方法
- 在这里对"DataGrid(WinForm)显示行号最简单的方法" 纠正一下错误的地方
- C# DataGrid 控件在winform里显示行号
- 如何在Eclipse 中显示行号最快捷的方法
- mysql中得到行号的最简单的方法
- Easyui Datagrid的Rownumber行号显示问题
- 浅析Easyui Datagrid的Rownumber行号显示
- Easyui Datagrid的Rownumber行号显示问题
- EasyUI中,datagrid加载数据后只显示行号,不显示列标题的问题解决方法
- WinForm DataGridView 显示行号
- JCreator显示行号的方法
- DataGrid控件自动显示行号
- Flex4 DataGrid自动显示行号
- jquery datagrid行号显示的一个小Bug
- 最简单的显示图片方法
- 最简单的显示图片方法
- winform 中要让 DataGridView 显示出每行的行号来
- DataList显示行号的三种方法
- VC用ADO访问数据库全攻略
- C++程序调试错误……谢谢您的帮助
- java的抽象类和接口分析(转贴自山哥的专栏)
- 嵌入式系统开发,不用Linux的理由 !
- 31/01/2005
- DataGrid(WinForm)显示行号最简单的方法
- [分享]美国名牌大学的计算机网络课程网址
- classpath和环境变量设置
- Windows NT/2000内部数据结构探究(http://webcrazy.yeah.net)
- oracle和oc4j下载链接
- junit使用简明手册
- 教育是中国发展的最短一块木板(转贴)
- 再谈Windows NT/2000内部数据结构(http://webcrazy.yeah.net)
- 用 Java 访问 Domino 的对象(三)