您不会这么认为,但是当列表框绑定到数据源时(据我所知),它确实如此。
我已将行为简化为下面的代码。“if”行在通过数据绑定加载列表和“手动”加载列表之间切换(两者都使用相同的数据表)。在每种情况下,我都会在之后设置选定的索引,然后更改父表单。手动加载时,选定的索引会保留,绑定时会丢失。我看不出这有什么意义——我不明白为什么更改主机表单会改变列表的任何属性。这是一个错误吗?
Public Class Form1
Sub main() Handles Me.Load
Dim ListControl1 As ListBox = New ListBox
ListControl1.Parent = Me
Dim dt = New DataTable
dt.Columns.Add("intColourID")
dt.Columns.Add("strName")
dt.Rows.Add({1, "Red"})
dt.Rows.Add({2, "Green"})
dt.Rows.Add({3, "Blue"})
ListControl1.ValueMember = dt.Columns(0).ColumnName
ListControl1.DisplayMember = dt.Columns(1).ColumnName
If False Then
ListControl1.DataSource = dt
Else
For i = 0 To dt.Rows.Count - 1
ListControl1.Items.Add(dt.Rows(i)("strName").ToString)
Next
End If
ListControl1.SelectedIndex = 2
Dim z As Form = New Form
ListControl1.Parent = z
z.Show()
End Sub
End Class