永发信息网

DataGridView显示行号的几种方法(第1页)

答案:2  悬赏:0  手机版
解决时间 2021-03-09 03:49
  • 提问者网友:呐年旧曙光
  • 2021-03-08 08:41
DataGridView显示行号的几种方法(第1页)
最佳答案
  • 五星知识达人网友:第四晚心情
  • 2021-03-08 09:57
方法一: 网上最常见的做法是用DataGridView的RowPostPaint事件在RowHeaderCell中绘制行号: RowPostPaint 1 private void dataGridView1_RowPostPaint(object sender, DataGridViewRowPostPaintEventArgs e) 2 3 { 4 5 try 6 7 { 8 9 //添加行号 10 11 SolidBrush v_SolidBrush = new SolidBrush(dataGridView1.RowHeadersDefaultCellStyle.ForeColor); 12 13 int v_LineNo = 0; 14 15 v_LineNo = e.RowIndex + 1; 16 17 18 19 string v_Line = v_LineNo.ToString(); 20 21 22 23 e.Graphics.DrawString(v_Line, e.InheritedRowStyle.Font, v_SolidBrush, e.RowBounds.Location.X + 15, e.RowBounds.Location.Y + 5); 24 25 26 27 } 28 29 catch (Exception ex) 30 31 { 32 33 MessageBox.Show("添加行号时发生错误,错误信息:" + ex.Message, "操作失败"); 34 35 } 36 37 } 但是这种方法在大数据量的时候性能比较差,每次滚动数据都会触发RowPostPaint事件。
全部回答
  • 1楼网友:污到你湿
  • 2021-03-08 11:30
你那方法明显有很大的问题,如果我删除一行呢?如果我不暗规矩乱删除一行你怎么办?  private void refreshdatagridviewlinenumber(int index)         {              for (int i = index; i < datagridview1.rows.count; i++)             {                  this.datagridview1.rows[i].headercell.value = (i + 1).tostring();             }          }         private void datagridview1_rowsremoved(object sender, datagridviewrowsremovedeventargs e)         {             refreshdatagridviewlinenumber(e.rowindex);          }         private void datagridview1_rowsadded(object sender, datagridviewrowsaddedeventargs e)         {             refreshdatagridviewlinenumber(e.rowindex);          }
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯