如何填充ComboBox添加新项目后

时间:2012-07-25 16:49:58

标签: c# winforms

我正在开发一个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();

1 个答案:

答案 0 :(得分: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方法,这样它就可以添加新方法而不是清除它并重新填充 - 我只是不知道你的代码的其余部分是如何构建的。