程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> DataGridView顯示行號的幾種方法

DataGridView顯示行號的幾種方法

編輯:C#入門知識

方法一:

網上最常見的做法是用DataGridView的RowPostPaint事件在RowHeaderCell中繪制行號:

 

\\RowPostPaint
       private void dataGridView1_RowPostPaint(object sender, DataGridViewRowPostPaintEventArgs e)
        {
            try
            {
                //添加行號 
                SolidBrush v_SolidBrush = new SolidBrush(dataGridView1.RowHeadersDefaultCellStyle.ForeColor);
                int v_LineNo = 0;
                v_LineNo = e.RowIndex + 1;

                string v_Line = v_LineNo.ToString();

                e.Graphics.DrawString(v_Line, e.InheritedRowStyle.Font, v_SolidBrush, e.RowBounds.Location.X + 15, e.RowBounds.Location.Y + 5);

            }
            catch (Exception ex)
            {
                MessageBox.Show("添加行號時發生錯誤,錯誤信息:" + ex.Message, "操作失敗");
            }
        }

 

 

 

但是這種方法在大數據量的時候性能比較差,每次滾動數據都會觸發RowPostPaint事件。

 

 

方法二:

我的做法是給每行的HeaderCell賦值。

在網上發現有人提到這種做法,但是因為最後的顯示問題而選擇了上面的方法。具體問題就是,在行號超過2位,如100、1000,在選中該行時,DataGridView的行指示符▶會把行號往右擠,導致現實不全,100的時候顯示▶ 10。

其實還是RowsHeaderWidth的大小有問題,將該列的寬度放大,行號顯示的也沒問題!

不知道他們有沒有試過,上面繪制行號的方法在大行號的情況下顯示也會有問題。

 

既然知道問題所在

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved