Combobox自动填充选项卡不会选择项目

时间:2009-08-12 20:25:09

标签: c# combobox autocomplete tabbing

所以有很多类似于我的问题,但没有一个我需要的。 我有一个组合框,里面有一系列城市。我打开了自动完成功能,这也完全符合我的想法,同时启用了draftappend。但问题是,如果用户尝试跳出组合框,则实际上并不选择该项。这是一个例子: 我正在寻找“奥兰多”。如果我输入“orla”,建议填写单词的其余部分(选中),因此显示“orlando”。这就是我想要选择的项目。如果我按Enter键然后选项卡,它将选择该项目,然后选项卡。我需要的是用于标签以选择与该单词匹配的基础项目。 如果我需要解释更多,我可以。 提前谢谢!

3 个答案:

答案 0 :(得分:1)

您使用的是哪个版本的.NET?我在3.5中尝试过它,行为与你所描述的相反。当我键入部分名称和制表符时,它会选择列表中的项目。如果我按Enter键,它不会选择该项,它实际上会清除我刚刚输入的值。

您的属性如何在ComboBox上设置?我有AutoCompleteMode = SuggestAppend和AutoCompleteSource = ListItems。

答案 1 :(得分:0)

我得到与OP相同的行为,并且标记的答案(来自Albert无法重现问题)不是一个解决方案。此问题也被报告为Connect as a Bug:

https://connect.microsoft.com/VisualStudio/feedback/details/711945/tab-on-a-winforms-combobox-with-properties-dropdownstyle-dropdownlist-autocompletemode-append-autocompletesource-listitems-doesnt-work-correctly

我没有按照Connect Bug的变通方法部分的说明创建自定义组合框控件。相反,我只是使用默认值设置下拉列表:

cboAccount.SelectedValue = _accountList(0).Key;   //<--Here I set a default value
cboAccount.DroppedDown = true;

答案 2 :(得分:0)

WM_KILLFOCUS消息中的值丢失。在WndProc的子类中覆盖ComboBox为我解决了这个问题。不幸的是,我手边只有VB.NET代码:

Protected Overrides Sub WndProc(ByRef m As Message)
    If m.Msg = &H8 Then  'WM_KILLFOCUS
        Dim sText As String = Me.Text
        MyBase.WndProc(m)
        Me.Text = sText
        Exit Sub
    End If

    MyBase.WndProc(m)
End Sub