簡體   English   中英

刷新ComboBox項目,最簡單的方法

[英]Refresh ComboBox Items, easiest way

我google了很多。 發現了很多。 不幸的是,沒有什么是直的,簡單的,最重要的是,簡單。 我想要一些人寫一個method ,它接受一個List<string>並刪除以前的Items ,然后設置這個List<string>

目前我有一個方法,但它沒有錯誤。

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

對於任何仍在疑惑的人。

您可以使用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引用進行排序,它將在組合框中再次反映出來。

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

這段代碼工作得很好

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

綁定到數據源時, Items.Clear(); 不起作用。 這應該是:

albumList.DataSource = list;

或者肯定:

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

如果您使用的是DataSource,則需要清除要顯示的新列表的項目。 由於在使用DataSource時無法清除,因此需要先將其設置為null。

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

我一直在處理類似這樣的問題的任務

將數據源設置為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(); } 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM