我有表 - 自定義id(如1.10,1.20)和名稱(字符串值可以重複)。而我的問題是將其設置爲winForms控件,如組合框。但我想在該領域的用戶將只看到名稱和ID將不可見,但下意識應該連接到名稱控制,當用戶選擇組合框中的項目,我可以得到這個ID。連接自定義列表與控制像combobox
任何想法,這是可能的?
我有表 - 自定義id(如1.10,1.20)和名稱(字符串值可以重複)。而我的問題是將其設置爲winForms控件,如組合框。但我想在該領域的用戶將只看到名稱和ID將不可見,但下意識應該連接到名稱控制,當用戶選擇組合框中的項目,我可以得到這個ID。連接自定義列表與控制像combobox
任何想法,這是可能的?
設置您的組合框像這樣:
// item type to display in the combobox
public class Item
{
public int Id { get; set; }
public string Text { get; set; }
}
// build new list of Items
var data = List<Item>
{
new Item{Id = 1, Text = "Item 1"},
new Item{Id = 2, Text = "Item 2"},
new Item{Id = 3, Text = "Item 3"}
};
// set databind
comboBox1.DataSource = data;
comboBox1.ValueMember = "Id"; // the value of a list item should correspond to the items Id property
comboBox1.DisplayMember = "Text"; // the displayed text of list item should correspond to the items Id property
// get selected value
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
var selectedValue = comboBox1.SelectedValue;
}
使用DisplayMember
屬性設置將顯示的內容並使用ValueMember
來設置它實際鏈接的內容。
例如在您的情況下,請將DataSource
設置爲表格,DisplayMember
設置爲名稱,將ValueMember
設置爲Id。
綁定到一個列表:
項目:
class MyItem
{
public int Id { get; set; }
public string DisplayText { get; set; }
}
設置綁定:
List<MyItem> items = new List<MyItem>
{
new MyItem(){ Id = 1, DisplayText = "one"},
new MyItem(){ Id = 2, DisplayText = "two"},
};
comboBox1.DisplayMember = "DisplayText"; // or whatever field your you want to display
comboBox1.DataSource = items;
尋找價值:
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
var item = comboBox1.SelectedItem as MyItem;
if (item != null)
Console.WriteLine(item.Id);
}
超級超級!理想解決方案 – netmajor 2010-08-21 18:01:38