You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VB.NET窗体首次加载时DataGridView无索引行及初始行问题排查

VB.NET DataGridView加载异常问题排查

窗体首次加载时,DataGridView存在两个问题:

  • 不显示索引行(行号列)
  • 没有初始数据行

问题代码

Public Class Form1
     Private itemtransfer As New List(Of ItemTransfer)()
    Private Sub AddColumnsProgrammatically()
        Dim col1 = New DataGridViewTextBoxColumn()
        Dim col2 = New DataGridViewTextBoxColumn()
        col1.HeaderText = "No"
        col1.Name = "No"
        col1.DataPropertyName = "No"
        col2.HeaderText = "CodeProduct"
        col2.Name = "CodeProduct"
        col2.DataPropertyName = "CodeProduct"
        DataGridView1.Columns.AddRange(New DataGridViewColumn() {col1, col2})
    End Sub
    Private Sub LoadData()
        DataGridView1.DataSource = itemtransfer
    End Sub
 Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        AddColumnsProgrammatically()
        LoadData()
    End Sub
Public Class ItemTransfer
    Public Property No() As Integer
    Public Property CodeProduct() As String
End Class

问题原因及解决办法

1. 索引行不显示

DataGridView默认隐藏行号列,需手动开启显示:
在AddColumnsProgrammatically方法末尾或Form1_Load中添加以下代码:

DataGridView1.RowHeadersVisible = True
' 可选:调整行号列宽度,确保行号正常显示
DataGridView1.RowHeadersWidth = 50

2. 无初始数据行

当前itemtransfer是空的List集合,绑定后自然没有数据行。根据需求可选择以下两种处理方式:

  • 添加空数据项
    若需要加载时直接显示一行空数据,修改LoadData方法:
Private Sub LoadData()
    ' 添加一个空对象作为初始行
    itemtransfer.Add(New ItemTransfer())
    DataGridView1.DataSource = itemtransfer
End Sub
  • 允许用户手动添加行
    确保DataGridView开启用户添加行功能(默认已开启,若被修改可手动设置):
DataGridView1.AllowUserToAddRows = True

绑定List时,用户点击DataGridView行尾的*标记即可添加新行。

截图说明

  • 截图1:DataGridView无索引行及初始数据行
  • 截图2:DataGridView空行显示异常

内容的提问来源于stack exchange,提问作者roy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 17:17:18