2012-03-02 67 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,這將工作得更好。

相關問題