用DataGridView的RowPostPaint事件在RowHeaderCell中绘制行号:
private void dataGridView1_RowPostPaint(object sender, DataGridViewRowPostPaintEventArgs e)
{
if (dataGridView1.Rows.Count < 1000) //RowHeaderWidth
dataGridView1.RowHeadersWidth = 30;
if (dataGridView1.Rows.Count>=1000 && dataGridView1.Rows.Count<9999)
dataGridView1.RowHeadersWidth = 43;
if (dataGridView1.Rows.Count >= 9999)
dataGridView1.RowHeadersWidth = 46;
try
{
SolidBrush v_sb = 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_sb, e.RowBounds.Location.X + 6, e.RowBounds.Location.Y + 5);
}
catch (Exception ex)
{
MessageBox.Show("a"+ex.Message,"Error");
}
}