设计简单测试界面如上
选择Datagirdview 的Paint事件
private void dttest_Paint(object sender, PaintEventArgs e)
{
int rowcount = dttest.RowCount;
int showcount = dttest.DisplayedRowCount(true);
if (showcount == 0) return;
System.Drawing.Rectangle currrct;
int startNo = dttest.FirstDisplayedCell.RowIndex;
int ColNo = dttest.FirstDisplayedCell.ColumnIndex;
string stext = "";
int nowy = 0;
int hDelta = 0;
for (int i = startNo; i < startNo + showcount; i++)
{
currrct = (System.Drawing.Rectangle)dttest.GetCellDisplayRectangle(ColNo, i, true);
nowy = currrct.Y + 2;
stext = string.Format("{0, 3}", rowcount - i);
if (hDelta == 0)
hDelta = (currrct.Height - dttest.Font.Height) / 2;
if (dttest.Rows[i].Selected == true)
e.Graphics.DrawString(stext, dttest.Font, new System.Drawing.SolidBrush(System.Drawing.Color.White), 10, nowy + hDelta);
else
e.Graphics.DrawString(stext, dttest.Font, new System.Drawing.SolidBrush(System.Drawing.Color.Black), 10, nowy + hDelta);
}
}
Result: