Mysql 为什么cmbStream.ValueMember=";id";所有值均显示零。DisplayMember=";名称“;显示正确的值

Mysql 为什么cmbStream.ValueMember=";id";所有值均显示零。DisplayMember=";名称“;显示正确的值,mysql,vb.net,Mysql,Vb.net,我按照教程将数据从数据库插入组合框,但似乎分配给所有数据的ValueMember是相同的,即使DisplayMember显示正确 这就是我将数据添加到组合框的方式 私有子cmbStream\u VisibleChanged(发送方作为对象,e作为事件参数)处理cmbStream.VisibleChanged 如果cmbStream.Visible=True,则 cmbStream.DataSource=GetStreamItems() cmbStream.DisplayMember=“名称” c

我按照教程将数据从数据库插入组合框,但似乎分配给所有数据的ValueMember是相同的,即使DisplayMember显示正确

这就是我将数据添加到组合框的方式

私有子cmbStream\u VisibleChanged(发送方作为对象,e作为事件参数)处理cmbStream.VisibleChanged
如果cmbStream.Visible=True,则
cmbStream.DataSource=GetStreamItems()
cmbStream.DisplayMember=“名称”
cmbStream.ValueMember=“id”
如果结束
端接头
在得到这样的数据之后

函数GetStreamItems()作为(StreamItem的)列表 Dim streamItems=新列表(StreamItem) 作为MySqlDataReader的Dim读取器 MysqlConn=新的MySqlConnection MysqlConn.ConnectionString=“server=”&My.Settings.MServer&“;user=”&My.Settings.MDbUser&“;password=”&My.Settings.MDbPass&“;database=”&My.Settings.MDb&“” Dim sql As String=“从tbl\U流中选择id、名称” Dim命令作为MySqlCommand MysqlConn.Open() Command=newmysqlcommand(sql,MysqlConn) Command.CommandTimeout=30 reader=Command.ExecuteReader() 如果reader.HasRows=True,则 而reader.Read() 添加(新的StreamItem(读卡器(“id”)、读卡器(“名称”)) 结束时 如果结束 退货项目 端函数 下面是StreamItem类

公共类StreamItem
Public Sub New(ByVal id为整数,ByVal name为字符串)
mID=id
mName=名称
端接头
作为整数的私有mID
公共属性id()为整数
收到
返回id
结束
设置(ByVal值为整数)
中值=值
端集
端属性
私有mName作为字符串
作为字符串的公共属性名()
收到
返回mName
结束
设置(ByVal值作为字符串)
mName=值
端集
端属性
末级

在代码中将所有数据的ValueMember设置为零时,我可能会犯什么错误?

您没有为get使用正确的变量。它应该是mID,而不是id

Public Property id() As Integer
    Get
        Return mID
    End Get
    Set(ByVal value As Integer)
        mID = value
    End Set
End Property
在VB.NET中,函数/属性的名称也用作返回值的某种变量。这与执行Return 123相同

Function SomeFunc() As Integer
    SomeFunc = 123
End Function
还是你的情况

Public Property id() As Integer
    Get
        id = mID
    End Get
    Set(ByVal value As Integer)
        mID = value
    End Set
End Property

由于尚未设置id,因此默认值为0。无论如何,不要使用该功能,这很混乱。

您的属性get for
id
的返回变量不正确。它显示
Return id
,而不是
Return mID
yes。另外:在分配数据源之前,设置
DisplayMember
ValueMember
字段。