你不会这么想,但是当列表框绑定到数据源时(就我所见),它会执行此操作。应该更改列表框的父级更改选定的索引?
我已经将行为简化为下面的代码。 “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
您是否为Microsoft工作?他们认为他们知道我想做什么或应该做得比我做得更好。 – DJDave 2012-03-22 13:42:57
我可以重新构造问题,以便不需要更改父项。注释掉第一个.parent =行,最后三行(以表格的形式等等)。为什么数据绑定列表在选定索引设置且手动索引不存在时抛出错误? – DJDave 2012-03-22 13:57:14
可能是没有意义的,但改变父母是否有意义? (替换并纠正我以前的评论) – 2012-03-22 20:55:28