当前位置: 首页 > 知识库问答 >
问题:

C#ComboBox防止下拉后选择项目

东方和惬
2023-03-14

我在视觉工作室中有一个特定的组合框问题。我使用它让用户在组合框的文本框部分中键入文本,这会立即启动 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;
            }
        }

但是只要下拉菜单打开,第一个项目就会被选中,它的整个文本就会粘贴到文本框中。因此,如果你开始在一行中写多个字母,第一个字母“消失”,因为第二个键入的字母替换了选定的文本。

我知道有一个类似的帖子,但答案没有帮助,因为它们会变慢(用户需要等待大约一秒钟才能键入):

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个答案

冯星阑
2023-03-14

实现的一种方法是使用自定义用户控件

您可以让< code>TextBox与< code>ComboBox重叠。

因此,用户将仅与文本框交互,并且根据在文本框中输入的文本(使用适当的事件 - 按键即可),您可以在数据库中查询并使用查询结果加载组合框

 类似资料:
  • 我正在使用()。有一些树节点,必须禁用这些节点才能进行选择。我试过选择活动,但它不起作用。更多信息请找到下面的代码。 如何阻止某些进行任何鼠标和键盘选择?

  • 在WPF组合框中,当使用DisplayMemberPath时,如何使ItemsSource中的空实例可选? 我绑定到对象集合并向该集合添加了 null。我还已将选定项绑定到属性。选择非 null 的值时,我的 SelectedItem 属性会正确更改。但是当我从下拉列表中选择空项时,我的 SelectedItem 属性不会更改。 我已经将其与DisplayMemberPath的使用隔离开来,也就是

  • 我正在尝试使用Capybara(2.1.0)从下拉菜单中选择一个项目。 我想通过数字来选择(意思是选择第二个、第三个等选项)。 我疯狂地搜索了所有的东西,但都没有结果。 但会导致以下错误: 那么我如何从下拉(使用Capybara)中选择第一个、第二个、第三个等选项呢?

  • 嗨,我一直在做量角器测试,我的测试有问题。我的ionic应用程序确实有一个具有模型名称的下拉列表,我试图使用模型名称访问它,它可以工作,但问题是它无法选择我需要从该下拉列表选项中选择的确切选项。它只选择第一个?我这样写了量角器语法。 但是这段代码选择的不是值59,而是值0,这是默认选项。有人能帮我吗?

  • wx.ComboBox对象提供了可供选择的项列表。 它可以配置为下拉列表或永久显示。 列表中的选定项目显示在文本字段中,默认情况下该文本字段是可编辑的,但可以在wx.CB_READONLY样式参数的情况下设置为只读。 wxPython API包含一个wx.Choice class ,其对象也是一个永久只读的下拉列表。 wx.ComboBox类构造函数使用的参数是 - Wx.ComboBox(par

  • 我有一个具有2级层次结构的TreeView控件。如果选择了第二级的项目,并且用户单击了另一个项目,我需要询问他是否确定要移动到另一个项目。如果他的答案是“否”,我需要阻止选择另一个TreeViewItem。 我试着这样做: 以一种有效的方式。但是,问题是我得到了两次OnMouseDown事件:第一级项目和第二级项目。例如,对于这棵树:俄罗斯-莫斯科-皮特美国-纽约-波士顿如果我单击波士顿,我将获得