Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在组合框中输入关键问题,并将“自动完成模式”设置为“附加”_C#_.net_Winforms_Combobox_Windows Applications - Fatal编程技术网

C# 在组合框中输入关键问题,并将“自动完成模式”设置为“附加”

C# 在组合框中输入关键问题,并将“自动完成模式”设置为“附加”,c#,.net,winforms,combobox,windows-applications,C#,.net,Winforms,Combobox,Windows Applications,当组合框中的下拉菜单打开且自动完成模式设置为追加时,按Enter键清除组合框的文本 在widows表单中,我们知道当组合框中的自动完成模式属性设置为追加时,我们会在键入项目的完整文本之前获取值 问题在于: 我单击下拉按钮并打开下拉列表 我试着输入一些字符,得到预期的值,这样就完成了文本 但当我按Enter键时,它会删除组合框的文本 当下拉列表打开时,如何使用Append选项并按Enter键,保留输入的文本而不删除它 我在“自动完成模式”属性中尝试了“无”选项,它工作正常,但没有附加数据 我

组合框
中的下拉菜单打开且
自动完成模式
设置为
追加
时,按Enter键清除
组合框
的文本

在widows表单中,我们知道当
组合框
中的
自动完成模式
属性设置为
追加
时,我们会在键入项目的完整文本之前获取值

问题在于:

  • 我单击下拉按钮并打开下拉列表
  • 我试着输入一些字符,得到预期的值,这样就完成了文本
  • 但当我按Enter键时,它会删除组合框的文本
当下拉列表打开时,如何使用
Append
选项并按Enter键,保留输入的文本而不删除它


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

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

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

这可能吗


谢谢

当下拉列表关闭时,它会按预期工作,但当下拉列表打开时,按Enter键将关闭下拉列表并删除输入的文本

作为一种解决方案,您可以从
组合框
派生并通过以下方式重写:

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);
    }
}

在vb.NET中,必须在事件
下键时执行此操作:

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

谢谢你的解决方案。。。我需要在哪里包括覆盖方法?我是否需要在单击下拉列表时创建任何事件并在那里尝试覆盖方法?你能帮助我理解这个解决方案吗?正如你在回答中看到的,你应该创建一个新类
MyComboBox
,继承自
ComboBox
,并使用它来代替
ComboBox
。我已经在form.cs文件中创建了这个类。。。我有我以前的代码,我使用Combobox\u商品来显示100多条记录。。。。我如何用已经存在的商品箱继承这个类?很抱歉,我是winforms的新手,请在本教程中进行指导…将代码放在项目中的单独文件中。不要把它放在课堂上。然后打开form.designer.cs并将
System.Windows.Forms.ComboBox
替换为
MyComboBox
。。。你是救命恩人。。。。谢谢,它成功了。。。非常感谢你教我这么做。。。