如何使用下拉框向数据源添加新项目?

3

我有一个下拉框,DropDownStyle设置为DropDown。我希望用户可以输入新项。当控件失去焦点时,我想将新项添加到底层数据源中。

但是,如果用户输入的名称已经存在,则必须选择现有的项。

我该怎么做?


你的基础数据源是什么? - rene
对象列表(TargetGroup) - Martijn
1个回答

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

如果用户输入了无法识别的文本,ComboBox控件会将SelectedItem设置为空。因此,我们创建一个新项,设置其属性,并将其添加到列表中。接下来,我们重新绑定列表到数据源,让ComboBox理解发生了变化。如果您使用的是BindingList而不是简单列表,则清除数据源并再次设置数据源的部分将不是必需的。
编辑:忘记补充 - 如果您设置AutoSuggest和AutoSuggestList,这将运行得更好。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接