Вопрос:
Мой выпадающий список (Me.cbHomeDrive) не инициализируется должным образом, если я использую
Me.cbHomeDrive.SelectedText = "E:"
На Form_Load:
For i As Integer = AscW("C"c) To AscW("Z"c) Step 1
Me.cbHomeDrive.Items.Add(New ComboBoxItem(ChrW(i) + ":"))
Next
Me.cbHomeDrive.SelectedIndex = 26 - 3
Me.cbHomeDrive.Enabled = False
С классом ComboBoxItem:
Public Class ComboBoxItem
Public Text As String
Public ID As String
Public Sub New(ByVal strText As String)
Text = strText
ID = strText
End Sub
Public Sub New(ByVal strText As String, ByVal strID As String)
Text = strText
ID = strID
End Sub
Public Overrides Function ToString() As String
Return Text
End Function
End Class
Теперь, если я сделаю
Me.cbHomeDrive.SelectedText = "E:"
сразу после
Me.cbHomeDrive.Enabled = False
Тогда ничего не происходит, и в выпадающем списке отображается Z:.
Если вместо
Me.cbHomeDrive.SelectedText = "E:"
Я использую
SetComboBoxToTextIndex(Me.cbHomeDrive, "E:")
с
' WTF '
' http://msdn.microsoft.com/en-us/library/system.windows.forms.combobox.selectedtext.aspx '
Sub SetComboBoxToTextIndex(ByVal cbThisComboBox As ComboBox, ByVal strItemText As String)
For i As Integer = 0 To cbThisComboBox.Items.Count - 1 Step 1
If StringComparer.OrdinalIgnoreCase.Equals(cbThisComboBox.Items(i).ToString(), strItemText) Then
cbThisComboBox.SelectedIndex = i
Exit For
End If
Next
End Sub
Затем он устанавливает правильный выбранный пункт (E:).
Почему это не работает с Me.cbHomeDrive.SelectedText = "E:"?