有几种方法可以查看。
您可以预先在ListBox1 上设置ValueMember。这是一个示例,其中ListBox 的值从1 到10 及其平方。 ValueMember 是 FacID,它只是数字。 DisplayMember 是 FacID 的正方形(用于演示目的!),表明您不需要显示值成员。
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Dim i As Integer
Dim table As New DataTable()
Dim column1 As New DataColumn("FacID")
Dim column2 As New DataColumn("Square")
table.Columns.Add(column1)
table.Columns.Add(column2)
For i = 0 To 9
Dim row As DataRow = table.NewRow()
row("FacID") = i
row("Square") = i ^ 2
table.Rows.Add(row)
Next i
Dim view As New DataView(table)
ListBox1.DataSource = view
' set the DisplayMember and ValueMember
ListBox1.DisplayMember = "Square"
ListBox1.ValueMember = "FacID"
End Sub
Private Sub ListBox1_SelectedValueChanged(sender As Object, e As EventArgs) Handles ListBox1.Click
Dim message = "Selected value: " & ListBox1.SelectedValue.ToString()
MessageBox.Show(message)
End Sub
这就是 ListBox 在运行时的样子
当它被点击时,显示所选值的消息
如果这是在运行您提供的代码之前完成的,那么您几乎可以按原样使用您的代码,因为现在ListBox1.ValueMember 是一个整数。请注意,您应该更严格并将整数转换为字符串以准备查询。
Dim query =
"SELECT DeptName FROM Departments " &
"inner JOIN Faculties ON Faculties.ID = Departments.FacID " &
"where FacID = '" & ListBox1.SelectedValue.ToString() & "'"
您也可以不设置ValueMember。如果未指定ValueMember,则SelectedValue 默认为DataSource 中的类型,即DataView,并且出于所有意图和目的,DataRowView 中的IList。
没有 DisplayMember,ListBox 看起来像这样
我想它不是这样的。因此,只需事先设置 ValueMember 即可。