c#ComboBox阻止在下拉列表后选择项目

时间:2017-01-17 09:14:03

标签: c# winforms combobox outlook-addin

我在visual studio中有一个组合框的特定问题。 我使用它让用户在组合框的文本框部分键入文本,这会立即启动SQL请求。 结果应显示在组合框的下拉列表部分中。 (DropDownStyle设置为DropDown)

private void UpdateParent(object sender, EventArgs e)
        {
            ParentListChange(); //Update the listitems

            //prevent from opening at the beginning
            if (!ParentSelect.Text.Trim().Equals("")) 
            {
                //my problem
                ParentSelect.DroppedDown = true;

                Cursor.Current = Cursors.Default;
            }
        }

但是,只要下拉列表打开,第一个项目就会被选中,并且它的整个文本将粘贴到文本框中。 因此,如果你开始连续写一个字母,那么第一个字母就会消失,而#34;就会消失。因为第二个打字的字母会替换所选的文字。

我知道有一个类似的帖子,但是答案没有帮助,因为它们会变慢(用户必须等待大约一秒才打字):

private void comboBox1_TextUpdate(object sender, EventArgs e)
    {
        var savedText = comboBox1.Text;
        comboBox1.DroppedDown = true;
        comboBox1.Text = savedText;
        comboBox1.Select(savedText.Length, 0);
    }

或者不打算打开下拉列表,这是必不可少的:

comboBox1.DropDownStyle = ComboBoxStyle.DropDown;
comboBox1.AutoCompleteMode = AutoCompleteMode.SuggestAppend;
comboBox1.AutoCompleteSource = AutoCompleteSource.ListItems;

有没有办法只禁用"选择第一项"事?

1 个答案:

答案 0 :(得分:0)

实现的一种方法是custom user control

您可以TextBox重叠ComboBox

因此,用户只会与文本框进行交互,并且根据TextBox中输入的文本(使用适当的事件 - 按键会很好),您可以在数据库中查询并加载ComboBox查询结果。