直接显示在HeaderCell中。,效果如下:
1、RowStateChanged事件触发
2、如果仅用于数据展示,RowStateChanged事件会触发多次,数据量过大会卡死,因此,使用了ColumnHeaderMouseClick事件,点击列头部 重新排列时才进行行号的刷新
注意:绑定数据源时进行一次刷新
3、行号没有完全显示出来的解决办法是将DataGridView的RowHeadersWidthSizeMode属性设置为AutoSizeToAllHeaders、AutoSizeToDisplayedHeaders或者AutoSizeToFirstHeader。
private void dataGridView1_ColumnHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e) { //显示在HeaderCell上 for (int i = 0; i < this.dataGridView1.Rows.Count; i++) { DataGridViewRow r = this.dataGridView1.Rows[i]; r.HeaderCell.Value = string.Format("{0}", i + 1); } this.dataGridView1.Refresh(); } private void Test1_Load(object sender, EventArgs e) { dataGridView1.DataSource = Common.GetTestDT(40,40); //行号显示在HeaderCell上 for (int i = 0; i < this.dataGridView1.Rows.Count; i++) { DataGridViewRow r = this.dataGridView1.Rows[i]; r.HeaderCell.Value = string.Format("{0}", i + 1); } this.dataGridView1.Refresh(); } private void dataGridView1_RowStateChanged(object sender, DataGridViewRowStateChangedEventArgs e) { ////显示在HeaderCell上 //for (int i = 0; i < this.dataGridView1.Rows.Count; i++) //{ // DataGridViewRow r = this.dataGridView1.Rows[i]; // r.HeaderCell.Value = string.Format("{0}", i + 1); //} //this.dataGridView1.Refresh(); }