首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ComboBox SelectedText,为什么不切换到SelectedText项?

ComboBox SelectedText,为什么不切换到SelectedText项?
EN

Stack Overflow用户
提问于 2011-03-25 23:06:49
回答 4查看 10.3K关注 0票数 3

问题:

我的组合框(Me.cbHomeDrive)不能正确初始化,如果我使用

代码语言:javascript
复制
Me.cbHomeDrive.SelectedText = "E:"

在Form_Load上:

代码语言:javascript
复制
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为:

代码语言:javascript
复制
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

现在如果我这么做了

代码语言:javascript
复制
Me.cbHomeDrive.SelectedText = "E:"

紧随其后

代码语言:javascript
复制
Me.cbHomeDrive.Enabled = False

然后什么都不会发生,组合框显示为Z:。

如果不是

代码语言:javascript
复制
Me.cbHomeDrive.SelectedText = "E:"

我使用

代码语言:javascript
复制
SetComboBoxToTextIndex(Me.cbHomeDrive, "E:")

使用

代码语言:javascript
复制
' 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:“一起工作?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-03-25 23:13:07

我想你误解了SelectedText属性是什么,请参考MSDN documentation

SelectedText属性不是项目列表中的项目,而是选中的可编辑组合框的一部分,就像您正在进行复制/粘贴类型的选择一样。

SetComboBoxToTextIndex方法是在列表中查找和选择项目的正确方法。或者,如果您的ComboBoxItem正确地实现了Equals,则可以找到适当的实例并设置SelectedItem属性。

票数 10
EN

Stack Overflow用户

发布于 2012-03-28 16:46:41

这段代码将很容易地完成您想要的操作。;)

代码语言:javascript
复制
myList.SelectedIndex = myList.FindString(myText);
票数 5
EN

Stack Overflow用户

发布于 2011-03-25 23:12:16

ComboBox.SelectedText等同于TextBox.SelectedText,即指定在组合框的文本框内选择的文本。它不会改变SelectedItem,因为它具有完全不同的语义。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5434310

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档