[C#][WinForm] DataGridView 顯示行號
第一個方式
在 RowPostPaint 事件中 繪製行號,有兩個做法都可以達到目的。
建議最好設個分頁,資料量一大的時候,繪製速度會有明顯變慢。
第一個方法:
{
Rectangle rectangle = new Rectangle(e.RowBounds.Location.X, e.RowBounds.Location.Y, dataGridView1.RowHeadersWidth - 4, e.RowBounds.Height);
TextRenderer.DrawText(e.Graphics, (e.RowIndex + 1).ToString(),
dataGridView1.RowHeadersDefaultCellStyle.Font,
rectangle,
dataGridView1.RowHeadersDefaultCellStyle.ForeColor,
TextFormatFlags.VerticalCenter | TextFormatFlags.Right);
}
第二個方法:
{
e.Graphics.DrawString((e.RowIndex + 1).ToString(),
e.InheritedRowStyle.Font,
new SolidBrush(Color.DarkBlue),
e.RowBounds.Location.X + 15,
e.RowBounds.Location.Y + 5);
}
第二個方式
在 RowsAdded 和 RowsRemoved 事件中把 RowHeader 設定行號,此處只設定 RowsAdded
因為範例沒有使用到移除列的功能就沒有添加 RowsRemoved 事件了
{
for (int i = 0; i < e.RowCount; i++)
this.dataGridView1.Rows[e.RowIndex + i].HeaderCell.Value = (e.RowIndex + i + 1).ToString();
}
範例檔案 下載
參考資料:
MSDN_DataGridView.RowPostPaint 事件