C# Winform DataGridview 实现行号倒序

设计简单测试界面如上

选择Datagirdview 的Paint事件

    private void dttest_Paint(object sender, PaintEventArgs e)     

    {            

         int rowcount = dttest.RowCount;   

         int showcount = dttest.DisplayedRowCount(true);    

         if (showcount == 0) return;        

        System.Drawing.Rectangle currrct;          

       int startNo = dttest.FirstDisplayedCell.RowIndex;  

       int ColNo = dttest.FirstDisplayedCell.ColumnIndex;    

       string stext = "";    

        int nowy = 0;         

       int hDelta = 0;      

       for (int i = startNo; i < startNo + showcount; i++)

     {

            currrct = (System.Drawing.Rectangle)dttest.GetCellDisplayRectangle(ColNo, i, true);   

             nowy = currrct.Y + 2;      

            stext = string.Format("{0, 3}", rowcount - i);       

             if (hDelta == 0)            

             hDelta = (currrct.Height - dttest.Font.Height) / 2;   

              if (dttest.Rows[i].Selected == true)            

         e.Graphics.DrawString(stext, dttest.Font, new System.Drawing.SolidBrush(System.Drawing.Color.White), 10, nowy + hDelta);         

        else       

              e.Graphics.DrawString(stext, dttest.Font, new System.Drawing.SolidBrush(System.Drawing.Color.Black), 10, nowy + hDelta);

            }      

   }

Result:

 

posted @ 2016-07-20 11:09  Alisa_li  阅读(2375)  评论(0编辑  收藏  举报