问题:
如果我使用,我的组合框 (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:"?
最佳答案
我认为您误解了 SelectedText
属性是什么,请参阅 MSDN documentation 。SelectedText
属性不是项目列表中的项目,而是选择的可编辑组合框的一部分,就像您在进行复制/粘贴类型的选择一样。
您的 SetComboBoxToTextIndex
方法是在列表中查找和选择项目的正确方法。或者,如果您的 ComboBoxItem 正确实现 Equals
,您可以找到合适的实例并设置 SelectedItem
属性。
关于c# - ComboBox SelectedText,为什么不切换到SelectedText项?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5434310/