C#中ComboBox動態綁定賦值


 http://www.crifan.com/csharp_combobox_data_dynamic_binding/

C#中,已有一個List,想要動態的,綁定到ComboBox中。

【解決過程】

1.參考:

c# winform comboBox動態綁定數據

去試試代碼:

cmbSubCategory.DataSource = generalCategoryList;
cmbSubCategory.DisplayMember = "name";
cmbSubCategory.ValueMember = "url";
結果是可以執行,但是點擊combobox時,下來菜單是空的。

2.參考:

C# Binding Generic LIst<string> to Combo Box

打算去試試。

3.經過后來的折騰,找到原因了:

【已搞懂】C#中代碼加了斷點,但是調試時卻無法執行到

4.然后此處,實際上是,之前的寫法,就是正常的:

public struct categoryItem
{
public string Name { get; set; }
public string Url { get; set; }
};
List<categoryItem> generalCategoryList;

private void initSearchCategory()
{
generalCategoryList = new List<categoryItem>();

foreach (HtmlNode singleOptionNode in optionNodeList)
{
......

//store info
categoryItem singleCategoryItem = new categoryItem();
singleCategoryItem.Name = generalCategory;
singleCategoryItem.Url = singleCategoryUrl;
//add to list
generalCategoryList.Add(singleCategoryItem);
}

if (generalCategoryList.Count > 0)
{
//init search category
cmbSubCategory.DataSource = generalCategoryList;
cmbSubCategory.DisplayMember = "name";
cmbSubCategory.ValueMember = "url";
}
}
然后ComboBox中就可以看到對應的選項了:

 

【總結】

綁定的動作,其實很簡單:

cmbSubCategory.DataSource = generalCategoryList;
cmbSubCategory.DisplayMember = "name";
cmbSubCategory.ValueMember = "url";
就可以了。

但是要注意:

此處,如果改為:

public struct categoryItem
{
public string name;
public string url;
};
List<categoryItem> generalCategoryList;

private void initSearchCategory()
{
generalCategoryList = new List<categoryItem>();

foreach (HtmlNode singleOptionNode in optionNodeList)
{
......

//store info
singleCategoryItem.name = generalCategory;
singleCategoryItem.url = singleCategoryUrl;
//add to list
generalCategoryList.Add(singleCategoryItem);
}

if (generalCategoryList.Count > 0)
{
//init search category
cmbSubCategory.DataSource = generalCategoryList;
cmbSubCategory.DisplayMember = "name";
cmbSubCategory.ValueMember = "url";
}
}
那么結果就錯了,然后每一項,就都是對應的對象的名字了:

 

具體根本原因,暫時懶得去深究了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM