【问题标题】:Enter Key Issue In ComboBox with AutoCompleteMode set to Append在 AutoCompleteMode 设置为 Append 的 ComboBox 中输入关键问题
【发布时间】:2016-07-20 16:02:18
【问题描述】:

ComboBox 中的下拉菜单打开且AutoCompleteMode 设置为Append 时,按Enter 键清除ComboBox 的文本。

我们知道在寡妇形式中,当ComboBox 中的AutocompleteMode 属性设置为Append 时,我们会在输入项目的完整文本之前获取这些值。

问题来了:

  • 我点击下拉按钮并打开下拉菜单
  • 我尝试输入一些字符,我得到了预期的值并完成了文本。
  • 但是当我按下 Enter 时,它会删除组合框的文本。

我怎样才能拥有Append 选项并在下拉菜单打开时按下Enter,保留输入的文本并且不要删除它。


我尝试了“自动完成模式”属性中的“无”选项,它工作正常,但没有附加数据......

我不需要“自动完成模式”属性中的建议和建议附加选项,因为它会打开另一个下拉窗口......

我需要在下拉框中的数据列出时键入数据,当我通过单击输入按钮获取附加值时,它应该可以工作(不会被删除)...

这可能吗?

谢谢

【问题讨论】:

    标签: c# .net winforms combobox windows-applications


    【解决方案1】:

    当下拉菜单关闭时,它会按预期工作,但是当下拉菜单打开时,按 Enter 会关闭下拉菜单并删除输入的文本。

    作为一种解决方案,您可以从ComboBox 派生并以这种方式覆盖IsInputKey

    public class MyComboBox : ComboBox
    {
        protected override bool IsInputKey(Keys keyData)
        {
            switch ((keyData & (Keys.Alt | Keys.KeyCode)))
            {
                case Keys.Enter:
                case Keys.Escape:
                    if (this.DroppedDown)
                    {
                        this.DroppedDown = false;
                        return false;
                    }
                    break;
            }
            return base.IsInputKey(keyData);
        }
    }
    

    【讨论】:

    • 感谢您的解决方案...我需要在哪里包含覆盖方法?单击下拉菜单并尝试那里的覆盖方法时,我是否需要创建任何事件?你能帮我理解解决方案吗?
    • 正如您在答案中看到的那样,您应该创建一个继承自ComboBox 的新类MyComboBox 并使用它而不是ComboBox
    • 我已经在我的 form.cs 文件中创建了这个类......并且我有我以前的代码,我使用 Combobox_commodity 来显示超过 100 条记录......我如何继承这个类已经存在的商品盒?对不起,我是这个 winforms 的新手,请指导这个......
    • 将代码放在项目中的单独文件中。不要把它放在表单类中。然后打开您的 form.designer.cs 并将System.Windows.Forms.ComboBox 替换为MyComboBox
    • 太棒了兄弟......你是救生员......谢谢它成功了......非常感谢你教我这样做......
    【解决方案2】:

    在 vb.NET 中,您必须在事件 keydown: 中执行此操作:

      Private Sub ComboBox2_KeyDown(sender As Object, e As KeyEventArgs) Handles ComboBox2.KeyDown
            If e.KeyCode = Keys.Enter Then TextBox7.Focus()
        End Sub
    

    【讨论】:

      猜你喜欢
      • 2017-01-05
      • 1970-01-01
      • 2015-04-15
      • 2016-05-15
      • 1970-01-01
      • 1970-01-01
      • 2012-02-16
      • 2020-07-03
      • 1970-01-01
      相关资源
      最近更新 更多