3
我有一个组合框DropDownStyle
设置为DropDown
。我希望用户可以输入一个新项目。通过离开控件,我想将新项目添加到下层数据源。如何使用组合框将新项目添加到数据源?
但是,当用户键入已存在的名称时,它必须选择现有的名称。
我该怎么做?
我有一个组合框DropDownStyle
设置为DropDown
。我希望用户可以输入一个新项目。通过离开控件,我想将新项目添加到下层数据源。如何使用组合框将新项目添加到数据源?
但是,当用户键入已存在的名称时,它必须选择现有的名称。
我该怎么做?
试试这个办法:
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,这将工作得更好。
什么是您的基础数据源? – rene 2012-03-02 23:21:04
对象列表(TargetGroup) – Martijn 2012-03-02 23:28:32