1

大家好,我有一个关于在 ListView 中绘制行号的问题,就像我在 DataGridView 中所做的那样。我正在使用 Visual Studio 2010。

在我的 DataGridView 中,我使用以下代码绘制行号:

Private Sub SalesDGV_RowPostPaint(ByVal sender As Object, ByVal e As DataGridViewRowPostPaintEventArgs) Handles SalesDGV.RowPostPaint
    'draw the row number
    Using b As SolidBrush = New SolidBrush(SalesDGV.RowHeadersDefaultCellStyle.ForeColor)
        e.Graphics.DrawString(e.RowIndex + 1, _
                               SalesDGV.DefaultCellStyle.Font, _
                               b, _
                               e.RowBounds.Location.X + 20, _
                               e.RowBounds.Location.Y + 4)
    End Using
End Sub

结果在我的 DataGridView 中:http: //puu.sh/3h4CF.png

我希望我的 ListView 行号与我的 DataGridView 具有完全相同的样式,但似乎 ListView 默认不支持这种样式,我需要一个自定义控件(?)

我知道有些人会建议我改用返回 DataGridView,但我改用 ListView 的原因是因为如果我不填充数据,DataGridView 会给我空白区域,而 ListView 允许我在不填充任何数据的情况下拥有 GridLines。

所以我在这里有两个问题:

  • 如何像在 DataGridView 中一样在 ListView 中绘制带有数字的行标题?
  • 即使我没有填充任何数据,我也可以在 DataGridView 中显示网格线吗?如果可能,我该如何实现?

谢谢!

4

1 回答 1

0

即使我没有填充任何数据,我也可以在 DataGridView 中显示网格线吗?如果可能,我该如何实现?

如果您使用空格填充数据表并将其用作数据源,您的 gridview 将具有网格线但似乎没有数据。

像这样的东西:

    Dim dt As New DataTable
    'Column to hold row numbers
    dt.Columns.Add(" ")
    'Number of columns
    For I = 1 To 5
        dt.Columns.Add(I.ToString)
    Next
    'Number of rows
    For I = 1 To 10
        'Extra column holds the row number
        dt.Rows.Add({I.ToString," ", " ", " ", " ", " "})
    Next
    SalesDGV.DataSource = dt

如何插入它以使网格线仍然存在并且数据相应地插入行中?

将数据放入数据表中。只需检查空数据并将其设为空格即可。如果要从数据库中添加数据,一种方法是遍历数据表的列和行,查找空数据并将其更改为空格。如果数据来自文件,您可能已经有一个循环,您可以使用它来修改数据。

于 2013-06-16T20:20:04.097 回答