刷新ComboBox项目,最简单的方法

时间:2012-12-30 08:25:54

标签: c# winforms c#-4.0 combobox

我已经google了很多。发现了很多。不幸的是,没有什么是直的,简单的,最重要的是,简单。我希望有些人写一个methodList<string>并删除之前的Items,然后设置此List<string>

目前我有一个方法,但它没有错误。

public void refreshList(List<string> list){
    albumList.Items.Clear();
    albumList.DataSource =  list;
}

5 个答案:

答案 0 :(得分:15)

对于任何仍在疑惑的人。

您可以使用BindlingList和BindingSource。

BindingList<YOUR_CLASS_TYPE> bindinglist = new BindingList<YOUR_CLASS_TYPE>()
BindingSource bSource = new BindingSource();
bSource.DataSource = bindinglist;
ComboBox.DataSource = bSource;

您将所有项目添加到绑定列表中,它们将在您的组合框中自动更新。

如果你想要一个可排序的组合框,你可以用一个从IList继承的容器构造BindingList,比如具有sort函数的List。然后,您可以对该IList引用进行排序,它将在组合框中再次反映出来。

答案 1 :(得分:6)

您不需要albumList.Items.Clear();

此代码可以正常使用

public void refreshList(List<string> list){
    albumList.DataSource =  list;
}

答案 2 :(得分:4)

绑定到数据源时,Items.Clear();不起作用。这应该是:

albumList.DataSource = list;

或者确定:

albumList.DataSource = null;
albumList.DataSource = list;

答案 3 :(得分:1)

如果您使用的是DataSource,则需要清除要显示的新列表的项目。 由于您在使用DataSource时无法清除,因此需要先将其设置为null。

albumList.DataSource = null;
albumList.Items.Clear();
albumList.DataSource = list;

答案 4 :(得分:0)

我一直在处理类似这样的问题的任务

将数据源设置为null并将列表重新分配给它的初始解决方案根本不起作用。虽然它确实清除了项目并在列表中显示了新项目,但它无法选择该列表中的任何项目。但是在挖掘互联网时,我发现了一个旧的VB解决方案,最终正在起作用并达到预期的效果。

以下是您需要做的事情:

  1. 在重新填充列表对象之前清除它。请参阅以下代码:

    //adding the instantiation of the list object so you know what I'm clearing
    List<string> listExample = new List<string>();
    listExample.Clear();
    
  2. 刷新comboBox,以便它获取新列表。请参阅以下代码:

    if (albumList.DataSource == null) 
    { 
        albumList.DataSource = listExample; 
    } 
    else 
    {
        albumList.Refresh();
    }