仅从组合框中选择列表项

我在Visual Studio 2010中有一个winforms应用程序。

在窗体上,我有一个数据绑定组合框,为此我设置了autocompletesource = listitems和autocompletemode = suggestappend。

现在为了使此功能有效,我设置了dropdownstyle = dropdown,以便用户可以键入文本

但是我希望用户只能从下拉列表中选择一个可用的项目。

如果用户输入除列表项以外的项目并离开组合框,则用户不应离开组合框。

总之,我希望用户能够仅从可用列表项中选择项目,而不是他输入的任何内容。

plz帮助


如果设置DropDownStyle = DropDownListAutoCompleteMode = Append ,用户仍然可以键入值来选择他们想要的项目,但它们将被限制为列表中的项目。

AutoCompleteMode = Append ,只要您快速键入它们,它就会检查后续的字符,方法是将它们附加到正在搜索的值上。 如果在击键之间等待时间过长,则会再次返回到第一个字母搜索。

考虑一下:你是否真的需要他们能够输入一个无效的值,以便你可以提醒他们它是无效的? 因为如果没有,那就更加混乱。 通过给他们输入任何价值的机会,这意味着他们被允许这样做。


将属性'DropDownStyle'设置为'DropdownList',这将阻止用户输入组合。

希望这可以帮助。


我寻找一些解决方案,但没有使用限制DropDownList(键入是时间有限的用户必须快速)。

以前的代码对我来说似乎很好,但在输入我们所需的内容时未被调用。 组合框我切换到AutoCompleteMode = SuggestAppendAutoCompleteSource = ListItemsDoprDownStyle = DropDown 。 这允许用户直接输入框,而不是时间限制。

这是我的代码,我希望对一些人有所帮助:

Private Sub ComboBox1_KeyUp(sender As Object, e As KeyEventArgs) Handles ComboBox1.KeyUp
  If ComboBox1.Text <> String.Empty Then
    If ComboBox1.FindString(cboSkupina.Text) = -1 Then 'if is value -1 typed text is not in list
      ComboBox1.Text = Mid(ComboBox1.Text, 1, Len(ComboBox1.Text) - 1) 'Delete not valid character
      ComboBox1.SelectionStart = Len(ComboBox1.Text) + 1 'Place cursor at the end
    End If
  End If
End Sub
链接地址: http://www.djcxy.com/p/60903.html

上一篇: Only select list items from combobox

下一篇: ComboBox.Text = null string instead of actual displayed string