【问题标题】:dgv add row number to headercelldgv 将行号添加到 headercell
【发布时间】:2016-12-08 23:09:40
【问题描述】:

我试图在headercell 中显示datagridview 的行号我的印象是这是可能的,但我无法让它显示值。

我需要做什么?

** dgv 与 BindingSource 绑定 **

我的尝试:

Private Sub NumberRows()

    For Each oRow As DataGridViewRow In dgvBodyOverview.Rows
        oRow.HeaderCell.Value = (oRow.Index + 1).ToString
    Next

End Sub

【问题讨论】:

  • 您可能必须使行标题变宽才能看到它 - 文本的空间受到限制,因此它可以在那里显示错误图标
  • 如果我拖动宽度覆盖整个屏幕我仍然看不到数字。
  • 对于尺寸,请尝试设置:dgvBodyOverview.RowHeadersWidthSizeMode = DataGridViewRowHeadersWidthSizeMode.AutoSizeToDisplayedHeaders
  • 它对我来说很好用,虽然 10 次中有 9 次我会在一个事件中这样做,因为可能有这么多行。确保您引用了正确的 DGV i.imgur.com/CZTQvb4.jpg
  • 我从一个加载所有行的 sub 调用它,最后调用。问题是否可能是dgv 是有界的?

标签: vb.net datagridview


【解决方案1】:

为了重现您的问题,我遵循了您的评论:

我从一个加载所有行的 sub 调用它,最后调用。

这样做,数字未能显示是否网格有DataSource。相反,我通常按照 Plutonix 上面的建议执行此操作 - 在 DataGridView.CellFormatting 中。

Private Sub dataGridView1_CellFormatting(sender As Object, e As DataGridViewCellFormattingEventArgs)
    Dim header As DataGridViewRowHeaderCell = Me.dataGridView1.Rows(e.RowIndex).HeaderCell

    If e.ColumnIndex = 0 Then
        header.Value = [String].Format("{0}", e.RowIndex + 1)
    End If
End Sub

我检查ColumnIndex = 0 以确保标题单元格值每行仅设置一次。更多解释请参见this C# answer

【讨论】:

    猜你喜欢
    • 2011-12-03
    • 2016-10-10
    • 2020-04-03
    • 2023-03-31
    • 1970-01-01
    • 1970-01-01
    • 2016-08-15
    • 2018-07-30
    • 1970-01-01
    相关资源
    最近更新 更多