【问题标题】:How to display serial number in datagridview?如何在datagridview中显示序列号?
【发布时间】:2019-10-12 06:01:32
【问题描述】:

我正在使用带有 C# 的 Windows 应用程序。 我想在 datagridview 中显示序列号。

【问题讨论】:

  • 网格行是固定的吗?
  • 行在 datagridview 中大部分是不固定的
  • Krushnakant Ladani 是对的,网格的行不固定。

标签: c# winforms datagridview


【解决方案1】:

在 WinForms 应用程序中,要在行标题中显示行号,我们可以使用 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);
        }
}

不要尝试过多地操作代码部分,因为 X 和 Y 是在行标题区域中计算的坐标,或者您可以自己自定义测试以查看各种结果。

结果

link

【讨论】:

    【解决方案2】:

    需要绑定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;
            }
        }
    

    这对我有用。

    【讨论】:

      【解决方案3】:
      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);
              }
          }
      

      【讨论】:

        【解决方案4】:
        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();
            }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-04-16
          • 2019-10-10
          • 1970-01-01
          • 2018-06-26
          • 1970-01-01
          • 2015-05-21
          • 1970-01-01
          • 2012-03-21
          相关资源
          最近更新 更多