[C#][WinForm] DataGridView 顯示行號

[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 事件

MSDN_TextRenderer.DrawText Method

卡卡尼莫_DataGridView显示行号及控件事件添加

DataGridView顯示行號的兩種方法

How to add row numbers to DataGridView

Dotblogs 的標籤: ,,