2016-04-01 22 views
3

输入键清除的ComboBox文本时,下拉列表已打开的ComboBoxAutoCompleteMode设置为Append进入关键问题在组合框与AutoCompleteMode设置附加

我们知道寡妇形式当ComboBoxAutocompleteMode属性设置为Append那么我们得到的值之前,我们键入项目的完整文本。

问题是在这里:

  • 我单击下拉按钮,打开向下
  • 我试着输入一些字符的下降,我得到的值作为预期,它完成的文本。
  • 但是当我按输入它删除组合框的文本。

我怎么能有Append的选择,也使按输入当下拉是开放的,不断输入的文本,并且不移除它。


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

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

我需要键入数据,而下拉框中的数据列出,当我得到附加值只需通过单击输入按钮它应该工作没有被删除)...

是这可能吗?

感谢

回答

3

当下拉关闭时,它工作正常,但是当下拉菜单打开时,按下回车关闭的下拉菜单并删除输入的文本。

作为一个解决方案,你可以从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); 
    } 
} 
+0

感谢您的解决方案...我在哪里需要包括覆盖methiod?点击下拉菜单时是否需要创建任何事件并尝试覆盖方法?你能帮助我理解解决方案吗? –

+0

正如你在答案中看到的那样,你应该创建一个从'ComboBox'继承的新类'MyComboBox',并用它来代替'ComboBox'。 –

+0

我在我的form.cs文件中创建了这个类...我有我以前的代码,我使用Combobox_commodity来显示超过100条记录....我如何继承这个类与已经存在的商品盒?对不起,我是这个winforms的新手,请在这一个指南... –