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
相关产品推荐
相关产品推荐

