VB.NET - 无法绑定到新的显示成员

VB.NET - Cannot bind to the new display member

我正在尝试为允许用户 select 成员的 ComboBox 分配 DataSource。我在 运行 我的应用程序时收到此错误:

Cannot bind to the new display member. Parameter name: newDisplayMember.

这是我的代码:

Private Sub StartScreen_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    'GetAllELData()
    ddlMember.DataSource = GetMemberList()
    ddlMember.DisplayMember = "DisplayName"
    ddlMember.ValueMember = "ID"


End Sub

Private Function GetMemberList() As List(Of Member)
    Dim rval = New List(Of Member)
    Dim dv As DataView = New DataView
    Dim myConnString = ConfigurationSettings.AppSettings("ConnString")

    Try
        dv = SqlHelper.ExecuteDataset(myConnString, CommandType.StoredProcedure, "spGetData").Tables(0).DefaultView
    Catch ex As Exception
        MessageBox.Show(ex.Message, "Database Error", MessageBoxButtons.OK)
    End Try

    For Each row As DataRowView In dv
        Dim mbrNum As String = row.Item("IMMBR_CD").ToString()
        Dim mbrName As String = System.Globalization.CultureInfo.CurrentCulture.TextInfo.ToTitleCase(row.Item("IMMBR_NM20").ToLower())
        Dim mbrState As String = row.Item("IMMBR_ST").ToString()

        'assigns the member data to the list of members
        rval.Add(New Member(mbrNum, mbrName, mbrState))
    Next

    Return rval
End Function

然后是我的 class 定义:

Public Class Member
    Public ID As String
    Public Name As String
    Public State As String
    Public DisplayName As String

    Public Sub New(ByVal i As String, ByVal n As String, ByVal s As String)
        ID = i
        Name = n
        State = s
        DisplayName = ID & " - " & Name & ", " & State
    End Sub

    Public Overrides Function ToString() As String
        Dim rval As String = ID & " - " & Name & ", " & State
        Return rval
    End Function

    Public Function GetID() As String
        Return ID
    End Function

    Public Function GetName() As String
        Return Name
    End Function

    Public Function GetState() As String
        Return State
    End Function
End Class

我不知道为什么会收到错误消息。该应用程序按预期正确加载成员,并且在我单击错误弹出窗口上的 "Continue" 后工作正常。我发现的有关错误的所有信息都是针对将 table 作为数据源而不是像我这样的自定义 class 传递的人,答案仅包含代码片段而不是对问题原因的解释。

谁能帮我弄清楚这里出了什么问题?

非常感谢!

错误是由直接绑定到字段引起的。将这些定义为属性并绑定到属性解决了这个问题。

Public ReadOnly Property GetID() As String
    Get
        Return Me.ID
    End Get
End Property

Public ReadOnly Property GetName() As String
    Get
        Return Me.Name
    End Get
End Property

Public ReadOnly Property GetState() As String
    Get
        Return Me.State
    End Get
End Property

Public ReadOnly Property GetDisplayName() As String
    Get
        Return Me.DisplayName
    End Get
End Property

并且:

Private Sub StartScreen_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    'GetAllELData()
    ddlMember.DataSource = GetMemberList()
    ddlMember.DisplayMember = "GetDisplayName"
    ddlMember.ValueMember = "GetID"


End Sub