【问题标题】:How to populate a ComboBox After adding new item添加新项目后如何填充组合框
【发布时间】:2012-07-26 18:09:07
【问题描述】:

我正在开发一个 SSIS 控制流任务。在我的 UI 上,我有一个组合框,它显示可用用户变量的列表以及添加新变量的能力。我能够成功添加变量,但即使在我重新填充数据源之后,我也无法在组合框中看到它。在 SelectionChangeCommitted 事件中,我正在保存组合框选择。如果用户选择添加新的 SSIS 用户变量,则会提示他们使用此方法。变量被保存,然后我重新填充组合框的数据源。虽然我的新变量没有显示在下拉列表中。我应该在不同的事件中重新填充组合框吗?

下面是我使用的代码示例。

  private List<string> FillVariablesList()
    {
        List<string> Variables = new List<string>();
        Variables.Add("");
        Variables.Add(New_Variable);
        foreach (Variable v in this.theTaskHost.Variables)
        {
            if (!v.SystemVariable && v.DataType == TypeCode.String)
                Variables.Add(v.Name);
        }

        return Variables;
    }

 combobox.datasource = FillVariablesList();

【问题讨论】:

  • 就是上面的方法。它用变量名填充 List 并返回列表。我很抱歉在上面的示例中方法名称是错误的。我已经修好了。
  • 你在任何地方调用 combobox.Databind() 吗?

标签: c# winforms


【解决方案1】:

尝试像这样使用共享的 ObservableCollection。

... 
class A
{
    private ObservableCollection<string> variables = new ObservableCollection<string>();

    ...
    private void FillVariablesList() 
    {
        variables.Clear();
        variables.Add(""); 
        variables.Add(New_Variable); 

        foreach (Variable v in this.theTaskHost.Variables) 
        { 
            if (!v.SystemVariable && v.DataType == TypeCode.String) 
                variables.Add(v.Name); 
        }

        this.comboBox.DataSource = null;
        this.comboBox.DataSource = variables;
    }
}

您甚至可以设置 FillVariables 方法,以便它只添加新的而不是清除它并重新填充 - 我只是不知道您的其余代码的结构。

【讨论】:

  • 谢谢。明天早上我一定会试一试的。我以前从未遇到过 ObservableCollection 类型。有待调查。
  • 即使在我的类中引用了 System.Collection.ObjectModel 库后,我也找不到 ObservableCollection 类型。有任何想法吗?没关系,我找到了。我没有在我的项目中引用 WindowBase v3 dll。
  • 我已按照建议添加了上述内容。我在 form_load 事件中设置组合框的数据源,并在将数据源分配给组合框之前填​​充变量 observablecollection。当我添加一个新变量时,它被添加到可观察集合中,但组合框数据源没有被刷新。我是否也应该重新分配组合框的数据源?
  • @zeencat 我修改了一些对我也有用的代码 - 让我知道你最终做了什么。
  • 与您在上面所做的完全一样。我将数据源清空然后重新应用它,但我也使用了绑定源。我尝试将 Changed Property 处理程序与 oberservable 事件一起使用,但无法得到它,因此放弃并按照上述方式进行操作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-03-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-26
  • 2021-06-28
  • 1970-01-01
相关资源
最近更新 更多