在VB.net中向DataGridView添加行号

6
我正在使用Vb.Net开发Windows应用程序。现在有一个表单,我想打印在网格中显示的记录。在网格中点击单元格标题可以对网格进行排序,并且应该按照网格中显示的内容进行打印。
所以我有点困惑如何在网格中保持行号。当填充网格并分配数据源时,我可以从DB中获取行号。但是当用户单击任何单元格标题并对该列进行排序时,行号会更改。此时,对于我来说很难维护行号。
有人能给我一个想法如何在网格中维护行号吗?
提前致谢。

1
你使用什么类型的数据库? - Nour Berro
1
你不想改变排序吗? - Vishal Suthar
1
@M.NourBerro 我们正在使用SQL Server 2008。 - Brijesh Patel
1
@VishalSuthar 当我从网格中打印记录时,它应该按照排序或未排序的方式打印与网格中显示相同的内容。 - Brijesh Patel
2个回答

8

我猜您需要这个:

注意:此代码是使用C#编写的,因此您可以将其转换为VB.Net

代理:

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);
        }
}

输出

行号


1
非常好?我该如何将行标题的背景颜色更改为您当前拥有的颜色? - kashif
2
@kashif 或者你可以这样做: _dataGridView.ColumnHeadersDefaultCellStyle.BackColor = Color.Blue; _dataGridView.EnableHeadersVisualStyles = false; - Vishal Suthar
1
感谢你向我介绍了这么好的VisualStyler。我从你提到的网站上安装了它,并使用Office2010皮肤更改了我的项目样式。现在我的应用程序比以前好看多了。几天后,它开始要求我输入许可证。你能告诉我你从哪里下载了破解版吗?我下载了版本v2.4.50000.1,但在谷歌上没有找到任何免费的密钥。它价值250美元,相当于25000巴基斯坦卢比,我甚至无法想象。如果你能帮我解决注册问题,我会非常高兴。 - kashif
您可以从此网站 https://converter.telerik.com/ 将C#代码转换为VB.NET。 - Codename K

-1

1
我们并不期望每个答案都是完美的,但是拼写、标点和语法正确的答案更容易阅读。它们也往往会更频繁地获得赞同。记住,您可以随时返回并编辑您的答案以改进它。 - KevenDenen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接