【问题标题】:How to add a new item to a datasource with a combobox?如何使用组合框将新项目添加到数据源?
【发布时间】:2012-03-02 22:56:12
【问题描述】:

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

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

我该怎么做?

【问题讨论】:

  • 你的底层数据源是什么?
  • 对象列表(TargetGroup)

标签: c# winforms combobox


【解决方案1】:

试试这个方法:

    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 设置为 null。所以我们创建新项目,设置它的属性并将其添加到列表中。接下来我们将 list 重新绑定到 DataSource 以让 ComboBox 了解发生了变化。如果您使用 BindingList 而不是简单列表,则不需要清除 DataSource 并再次设置它的部分。

编辑:忘记添加 - 如果您设置 AutoSuggest 和 AutoSuggestList,这会更好。

【讨论】:

    猜你喜欢
    • 2012-10-27
    • 2015-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多