你不會這麼想,但是當列表框綁定到數據源時(就我所見),它會執行此操作。應該更改列表框的父級更改選定的索引?
我已經將行爲簡化爲下面的代碼。 「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