1

所以有很多与我类似的问题,但没有一个是我真正需要的。我有一个包含城市列表的组合框。我打开了自动完成功能,这正是我想要的,同时也打开了建议附加功能。但是,问题是,如果用户试图跳出组合框,它实际上并没有选择该项目。这是一个例子:我正在搜索“奥兰多”。如果我输入“orla”,建议填写单词的其余部分(选定),因此显示“orlando”。这就是我要选择的项目。如果我按回车键然后制表符,它将选择该项目然后制表符。不过,我需要的是选择与单词匹配的基础项目。如果我需要解释更多,我可以。提前致谢!

卢克

4

3 回答 3

1

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

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

于 2009-08-14T06:21:22.030 回答
1

我得到与 OP 相同的行为,并且标记的答案(来自无法重现问题的 Albert)不是解决方案。此问题也已作为错误报告给 Connect:

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;
于 2015-08-19T01:15:02.463 回答
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
于 2017-04-06T08:44:03.470 回答