Vb.NET:在列表视图中绘制行号

时间:2013-06-16 16:30:39

标签: vb.net listview datagridview row gridlines

问候所有人,我有一个关于在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而不填充任何数据数据

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

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

谢谢!

1 个答案:

答案 0 :(得分: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
  

如何插入它以便网格线仍然存在并且那样   数据是否相应地插入行中?

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