2012-03-02 70 views
3

我有一个组合框DropDownStyle设置为DropDown。我希望用户可以输入一个新项目。通过离开控件,我想将新项目添加到下层数据源。如何使用组合框将新项目添加到数据源?

但是,当用户键入已存在的名称时,它必须选择现有的名称。

我该怎么做?

+0

什么是您的基础数据源? – rene 2012-03-02 23:21:04

+0

对象列表(TargetGroup) – Martijn 2012-03-02 23:28:32

回答

4

试试这个办法:

private void comboBox1_Validating(object sender, CancelEventArgs e) 
    { 
     if (comboBox1.SelectedItem == null) 
     { 
      IList list = comboBox1.DataSource as IList; 
      if (list != null) 
      { 
       TargetGroup group = new TargetGroup(comboBox1.Text); 
       list.Add(group); 
       comboBox1.DataSource = null; 
       comboBox1.DataSource = list; 
       comboBox1.DisplayMember = "Caption"; 
       comboBox1.SelectedItem = group; 
      } 
     } 
    } 

如果无法识别的文本框控件selectedItem设置用户类型为null。所以我们创建新项目,设置它的属性并将其添加到列表中。接下来,我们重新绑定到DataSource,让ComboBox了解到有变化。如果使用BindingList而不是简单列表,则清除DataSource并重新设置的部分将不是必需的。

编辑:忘了添加 - 如果你设置AutoSuggest和AutoSuggestList,这将工作得更好。

相关问题