问题:
我的组合框(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:“一起工作?
发布于 2011-03-25 23:13:07
我想你误解了SelectedText属性是什么,请参考MSDN documentation。
SelectedText属性不是项目列表中的项目,而是选中的可编辑组合框的一部分,就像您正在进行复制/粘贴类型的选择一样。
SetComboBoxToTextIndex方法是在列表中查找和选择项目的正确方法。或者,如果您的ComboBoxItem正确地实现了Equals,则可以找到适当的实例并设置SelectedItem属性。
发布于 2012-03-28 16:46:41
这段代码将很容易地完成您想要的操作。;)
myList.SelectedIndex = myList.FindString(myText);发布于 2011-03-25 23:12:16
ComboBox.SelectedText等同于TextBox.SelectedText,即指定在组合框的文本框内选择的文本。它不会改变SelectedItem,因为它具有完全不同的语义。
https://stackoverflow.com/questions/5434310
复制相似问题