datagridview 很好地显示了数据,但我想按顺序查看数字而不是行标题处的指针。
如图所示,标题单元格中有一个箭头。我不想这样,当我编写下面的代码时,只有当鼠标悬停在数字上时才会出现数字。
for (int i = 0; i < dataGridView1.Rows.Count; i++)
{
dataGridView1.Rows[i].HeaderCell.Value = (i + 1).ToString();
}
我想直接在行标题中看到它,如下图所示
最佳答案
您可以自己绘制行标题:
private void DataGridView1_CellPainting(object sender, DataGridViewCellPaintingEventArgs e)
{
// Draw only if the cell is the row header: e.ColumnIndex == -1
// and the row is not the column header: e.RowIndex >= 0
if (e.ColumnIndex == -1 && e.RowIndex >= 0) {
bool isSelected = (e.State & DataGridViewElementStates.Selected) != 0;
e.PaintBackground(e.ClipBounds, isSelected);
var grid = (DataGridView)sender;
if (e.RowIndex == grid.CurrentRow.Index) {
e.PaintContent(e.ClipBounds); // Paints the selection arrow
}
var g = e.Graphics!;
TextRenderer.DrawText(g, $"{e.RowIndex + 1}\u00a0", grid.Font, e.CellBounds,
grid.ForeColor, TextFormatFlags.Right | TextFormatFlags.VerticalCenter);
e.Handled = true;
}
}
我使数字向右对齐并垂直居中。 “\u00a0”
是一个不间断空格,它使行号与行标题单元格右边缘的距离最小。
我尝试了g.DrawString
和TextRenderer.DrawText
。后一种使文本看起来与网格的其余部分更加一致,并绘制更清晰的文本。
关于c# - 如何更改Datagridview行标题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/77510409/