所以有很多类似于我的问题,但没有一个我需要的。 我有一个组合框,里面有一系列城市。我打开了自动完成功能,这也完全符合我的想法,同时启用了draftappend。但问题是,如果用户尝试跳出组合框,则实际上并不选择该项。这是一个例子: 我正在寻找“奥兰多”。如果我输入“orla”,建议填写单词的其余部分(选中),因此显示“orlando”。这就是我想要选择的项目。如果我按Enter键然后选项卡,它将选择该项目,然后选项卡。我需要的是用于标签以选择与该单词匹配的基础项目。 如果我需要解释更多,我可以。 提前谢谢!
路
答案 0 :(得分:1)
您使用的是哪个版本的.NET?我在3.5中尝试过它,行为与你所描述的相反。当我键入部分名称和制表符时,它会选择列表中的项目。如果我按Enter键,它不会选择该项,它实际上会清除我刚刚输入的值。
您的属性如何在ComboBox上设置?我有AutoCompleteMode = SuggestAppend和AutoCompleteSource = ListItems。
答案 1 :(得分:0)
我得到与OP相同的行为,并且标记的答案(来自Albert无法重现问题)不是一个解决方案。此问题也被报告为Connect as a Bug:
我没有按照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