VB.NET 中的数据绑定到列表(自定义对象)

DataBinding to List(Of CustomObject) in VB.NET

我使用 DataTable 简单绑定 TextBoxText 属性 有一段时间了:

Dim dtbData As New DataTable

' populate table

Me.BindingSource.DataSource = dtbData
txtBox.DataBindings.Clear()
txtBox.DataBindings.Add(New Binding("Text", Me.BindingSource, "OrderNumber", True))

BindingNavigator1.BindingSource = Me.BindingSource

但是,我正在尝试将其更改为使用 List(Of CustomObject)。我只是使用 dtbData 填充 List 并将 DataSource 设置为 List。我已经设置了一个断点,DataTableList 都被填充了。如果我注释掉将 Binding 添加到 txtBox 的行,那么 BindingNavigator 将按预期工作,但如果我不理会它,绑定将不起作用。

这是我试过的方法:

Dim lstData As New List(Of CustomObject)
Dim dtbData As New DataTable

' populate table

For Each row As DataRow In dtbData.Rows
    Dim obj As New CustomObject

    obj.OrderNumber = CInt(row("OrderNumber"))
    lstData.Add(obj)
Next

Me.BindingSource.DataSource = lstData
txtBox.DataBindings.Clear()
txtBox.DataBindings.Add(New Binding("Text", Me.BindingSource, "OrderNumber", True))

BindingNavigator1.BindingSource = Me.BindingSource

看起来应该是一样的。不过 BindingSource 不是 DataTable,而是 List(Of CustomObject),所以我不确定是否需要做一些不同的事情。被绑定的 属性 名称仍然相同。我也在 Binding 中尝试了 Me.BindingSource.Current 但这也不起作用。谁能告诉我我做错了什么?

CustomObject 看起来像这样:

Public Class CustomObject
    Public OrderNumber As Integer
End Class

编辑

我在绑定周围添加了一个 Try/Catch 块,我看到以下错误消息:

无法绑定到数据源上的 属性 或列 OrderNumber。参数名称:dataMember

我只是看不出绑定到 DataTableOrderNumber 列或绑定到 CustomObjectOrderNumber 属性 之间有什么不同.

我意识到问题出在哪里了。 OrderNumber 未定义为我的 CustomObjectProperty。我将定义更改为:

Public Class CustomObject
    Public Property OrderNumber As Integer
End Class

现在它允许我将 TextBoxText 属性 绑定到 CustomObjectOrderNumber 属性。