如何在用户将文本输入到combox时禁用combox下拉列表

时间:2016-12-02 23:07:40

标签: c# filter combobox

我在c#表单中有一个简单的组合框,它是从一个数组中填充的。

我已将AutoCompleteMode设置为SuggestAppend,将AutoCompleteSource设置为ListItems。这允许我通过在组合框中键入一个字符串来快速筛选列表,并在我键入时显示匹配的项目。这非常有效。

但是,当下拉列表打开并且我开始输入时,已过滤的列表会显示在下拉列表的顶部,但我无法从已过滤的列表中进行选择,只能从下拉列表中进行选择。

用户在组合框中输入字符后,如何在打开时禁用下拉列表。

目前只有一种方法用于组合框

private void SelectJobDropdown_SelectedIndexChanged(object sender, EventArgs e)
        {
            //plenty of code here 
        }

我已经尝试为组合框添加其他方法,例如KeyPress或Keydown,但似乎没有任何方法可用,因为我很可能做错了

使用Visual Studio 2015

1 个答案:

答案 0 :(得分:0)

如果我理解正确,你就不喜欢旧的下拉列表上的重叠列表了。由于您在ComboBox中输入字母,我建议您使用comboBox1_TextUpdate事件。这段很好的代码应该可以解决您的问题:

private void comboBox1_TextUpdate(object sender, EventArgs e)
{
    comboBox1.DropDownStyle = ComboBoxStyle.Simple;

设置ComboBox.DropDownStyle属性,

  

指定是否始终显示列表或列表是否显示在下拉列表中[...]

ComboBoxStyle.Simple

  

指定列表始终可见,文本部分可编辑。这意味着用户可以输入新值,而不仅限于在列表中选择现有值。

将删除原始下拉列表(长列表),仅保留过滤后的结果。