我正在使用C#的Windows应用程序。 我想在datagridview中显示序列号。
答案 0 :(得分:3)
您需要绑定datagridview的DataBindingComplete事件。
private void gridStateZone_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e)
{
LoadSerial(gridStateZone);
}
private void LoadSerial(DataGridView grid)
{
foreach (DataGridViewRow row in grid.Rows)
{
grid.Rows[row.Index].HeaderCell.Value = string.Format("{0} ", row.Index + 1).ToString();
row.Height = 25;
}
}
这对我有用。
答案 1 :(得分:2)
在WinForms Applications中,要在行标题中显示行号,我们可以使用DataGridView控件的RowPostPaint事件。
用法:假设网格命名为dgvUserDetails
<强>代表强>
this.dgvUserDetails.RowPostPaint += new System.Windows.Forms.DataGridViewRowPostPaintEventHandler(this.dgvUserDetails_RowPostPaint);
<强>代码强>
private void dgvUserDetails_RowPostPaint(object sender, DataGridViewRowPostPaintEventArgs e)
{
using (SolidBrush b = new SolidBrush(dgvUserDetails.RowHeadersDefaultCellStyle.ForeColor))
{
e.Graphics.DrawString((e.RowIndex + 1).ToString(), e.InheritedRowStyle.Font, b, e.RowBounds.Location.X + 10, e.RowBounds.Location.Y + 4);
}
}
不要试图操纵Code部分,因为X和Y是行标题区域中的计算坐标,或者您可以自定义测试它以查看各种结果。
<强>结果强>
答案 2 :(得分:1)
private void grid_RowPostPaint(object sender, DataGridViewRowPostPaintEventArgs e )
{
using (SolidBrush b = new SolidBrush(((DataGridView)sender).RowHeadersDefaultCellStyle.ForeColor))
{
e.Graphics.DrawString((e.RowIndex + 1).ToString(), e.InheritedRowStyle.Font, b, e.RowBounds.Location.X + 10, e.RowBounds.Location.Y + 4);
}
}
答案 3 :(得分:0)
private void DgvSupplierInfo_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e)
{
if (dgvSupplierInfo == null)
return;
int sno = 1;
string columnName = "columnName";
string headerText = "headerText";
if (dgvSupplierInfo.Columns.Contains(columnName))
dgvSupplierInfo.Columns.Remove(columnName);
{
dgvSupplierInfo.Columns.Add(columnName, headerText);
}
dgvSupplierInfo.Columns[columnName].DisplayIndex = 0;
foreach (DataGridViewRow row in dgvSupplierInfo.Rows)
row.Cells[columnName].Value = sno++;
dgvSupplierInfo.AutoResizeColumns();
}