DataGridRow 显示datagrid行数,不过会加慢速度

这个博客介绍了一个名为DataGridRow的类,它扩展了DataGrid并添加了显示行号的功能。然而,这种方法可能会降低数据网格的绘制速度。在OnPaint方法中,当DataSource存在时,它会计算并绘制行号。文章强调,只有在有记录时才会显示序号,并考虑了子行的显示。尽管如此,这种方法可能会对性能产生负面影响。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 public class  DataGridRow : DataGrid
 {
  protected override  void OnPaint(PaintEventArgs e)

  {

   base.OnPaint(e);

   try

   {

    if(this.DataSource!=null)

    {          

     int yDelta;

     System.Drawing .Rectangle cell=this.GetCellBounds(0,0);

     int y=cell.Top +2;

     e.Graphics.DrawString("", this.Font, new SolidBrush(Color.Black), 8, y-18); //

     if(this.VisibleRowCount >0)//只在有记录集时在表格中显示序号

     {                  

      CurrencyManager cm;

      cm = (CurrencyManager) this.BindingContext[this.DataSource, this.DataMember];

      if(cm.Count >0)

      {                      

       int nRow=-1;

       y=41;           //为第一行默认高度

       while(nRow<0)

       {

        nRow=this.HitTest (8,y).Row ;

        y++;

       }

       int nCount=0;

       while(y<this.Height && nCount<this.VisibleRowCount )

       {

        string text = string.Format("{0}", nRow+nCount+1);

        e.Graphics.DrawString(text, this.Font, new SolidBrush(Color.Black), 10, y);

        yDelta = this.GetCellBounds( nRow+nCount,0).Height + 1;//****表示一行高度的参数

        y += yDelta;

        //如果下面有子行显示序号的区分显示  

        if(this.IsExpanded (nRow+nCount)&& nRow+nCount+1<cm.Count )                                
        {

         y+=this.GetCellBounds (nRow+nCount+1,0).Height +3;

        }

        nCount++;      

       }

      }

     }

    }

   }

   catch

   {}

  }

调用继承他就可以了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值