让DataGridView显示行号,去除空记录行

本文介绍如何在WinForm应用程序中的DataGridView控件上显示行号。通过自定义RowPostPaint事件,可以在不使用SQL语句的情况下轻松实现行号显示。此外,还介绍了如何隐藏最后一条空记录及调整列设置的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

做的 winform 中要让 DataGridView 显示出每行的行号来,并不需要用sql等语句写,烦。

加入下端即可。

 

        private void dgvGridView_RowPostPaint(object sender, DataGridViewRowPostPaintEventArgs e)
        {
            Rectangle rectangle = new Rectangle(e.RowBounds.Location.X,
                                                e.RowBounds.Location.Y,
                                                this.dgvGridView.RowHeadersWidth - 4,
                                                e.RowBounds.Height);

            TextRenderer.DrawText(e.Graphics, (e.RowIndex + 1).ToString(),
                                    this.dgvGridView.RowHeadersDefaultCellStyle.Font,
                                    rectangle,
                                    this.dgvGridView.RowHeadersDefaultCellStyle.ForeColor,
                                    TextFormatFlags.VerticalCenter | TextFormatFlags.Right);
        }

 

加上这段即可实现。

 

图片

 

要不想像在页面的最左面显示行号,在属性Columns选项中,添加一列,不要命名Name,只有命名显示出来的 HeaderText 就可以了,当然要将 RowHeadersVisible 设为 false。

 

 

 

加上下面这句就不会显示出最后一条空记录了

this.dataGridView1.AllowUserToAddRows = false;属性里设置也可

private void Select_button_Click(object sender, EventArgs e) { recordCount = DbContext.Db.Ado.GetInt("SELECT COUNT(*) FROM P_WorkOrder"); //recordCount = 0; pageCount = (int)Math.Ceiling((double)recordCount / pageSize); dataGridView1.DataSource = DbContext.Db.Queryable<P_WorkOrder>().Select(x => new { x.FactoryName, x.MfgLineName, x.WorkOrderName, x.WorkOrderNo, x.ProductionNo, x.ProductFamily, x.PlanNumber, x.OrderName, x.PlannedcompletionDate, x.PlannedstartDate, x.DoneNumber, x.WorkOrderRuleID, x.WorkOrderType, x.WorkOrderStatus, }).OrderBy(x => x.PlannedstartDate, OrderByType.Desc).ToPageList(pageStart, pageSize, ref recordCount).ToList(); //设置表头 dataGridView1.Columns["FactoryName"].HeaderText = "工厂名称"; dataGridView1.Columns["MfgLineName"].HeaderText = "产线名称"; dataGridView1.Columns["WorkOrderName"].HeaderText = "工单名称"; dataGridView1.Columns["WorkOrderNo"].HeaderText = "产品型号"; dataGridView1.Columns["ProductionNo"].HeaderText = "产品料号"; dataGridView1.Columns["ProductFamily"].HeaderText = "产品系列"; dataGridView1.Columns["PlanNumber"].HeaderText = "计划产量"; dataGridView1.Columns["OrderName"].HeaderText = "订单"; dataGridView1.Columns["PlannedcompletionDate"].HeaderText = "计划结束时间"; dataGridView1.Columns["PlannedstartDate"].HeaderText = "计划开始时间"; dataGridView1.Columns["DoneNumber"].HeaderText = "实际产量"; dataGridView1.Columns["WorkOrderRuleID"].HeaderText = "工单规则编号"; dataGridView1.Columns["WorkOrderType"].HeaderText = "工单类型"; dataGridView1.Columns["WorkOrderStatus"].HeaderText = "工单状态"; //禁止自动选中第一 dataGridView1.Rows[0].Selected = false; All_textBox.Text = recordCount.ToString(); PageAll_textBox.Text = pageCount.ToString(); Page_textBox.Text = (pageIndex + 1).ToString(); }
最新发布
08-17
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值