Вы бы так не подумали, но это происходит, когда список связан с источником данных (насколько я могу видеть).следует изменить родительский элемент списка, чтобы изменить выбранный индекс?
Я уменьшил поведение до кода ниже. Строка «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
Я могу переформулировать проблему, чтобы не требовалось менять родителя. Выделите первую строку .parent = и последние три строки (dim z как форма и т. Д.). Почему список, привязанный к данным, выдает ошибку, когда выбран selectedindex, а ручной - нет? – DJDave
Может быть, это не имеет смысла, но меняет ли родитель смысл? (заменяет и исправляет мой предыдущий комментарий) –