列表框VB.NET的ValueMember

列表框VB.NET的ValueMember,vb.net,Vb.net,你好 我想显示表“订阅者”中的电话号码,其值(与字符串)相同。例如,我想显示以下数字: +12345678 +87654321 这是我的密码: Dim conStr As String = ConfigurationManager.ConnectionStrings("dbConnectionString").ConnectionString Dim adapter As New SqlDataAdapter("Select * from tblSubscribers", conStr) D

你好

我想显示表“订阅者”中的电话号码,其值(与字符串)相同。例如,我想显示以下数字:

+12345678 
+87654321
这是我的密码:

Dim conStr As String = ConfigurationManager.ConnectionStrings("dbConnectionString").ConnectionString
Dim adapter As New SqlDataAdapter("Select * from tblSubscribers", conStr)
Dim dataset As DataSet = New DataSet

adapter.Fill(dataset)

ListBoxSubscribers.DataSource = dataset.Tables(0)
ListBoxSubscribers.DisplayMember = "Phone"
ListBoxSubscribers.ValueMember = "Phone"
我正在尝试遍历列表框的每个值。问题是我得到的是P,h,o,n,e而不是实际的数字。这是我的迭代程序:

        For Each item As String In ListBoxSubscribers.ValueMember
            Dim PhoneNumber As String = item.ToString
            TextBoxPhoneNumberDisplay.Text = PhoneNumber
            SendSMS(PhoneNumber, msg)
            System.Threading.Thread.Sleep(2000)
        Next

谢谢。

valuemember必须是主键,顺便说一下,您没有遍历整个valuemember,它只是在该控件中设置的“字符串”,请尝试将displayMember和valuemember设置为数据集中的列,如:

listboxsubscribers.displayMember = dataset.Tables(0).columns(index)

您的
ListBoxSubscribers
控件正在使用DataTable作为其
数据源,这意味着列表中的项是DataRowView项,而不是字符串

您还可以遍历
Items
集合,而不是
ValueMember
属性

快速修复:

For Each item As DataRowView In ListBoxSubscribers.Items
  Dim PhoneNumber As String = item("Phone").ToString
  '\\ etc
Next
查看文档,我非常确定valuemember和displaymember只能是您正在使用的类的属性,在本例中是DataSet类。