2011-12-26 6 views
6

Piszę aplikację C#, używając WinForm. Mam listbox. Dostaję moje dane z pliku xml, nazwy użytkownika i jego identyfikatora. Chcę, aby nazwy były wyświetlane w polu listy, a kiedy wybiorę jedną z nich, chcę uzyskać jej identyfikator za pomocą właściwości selectedValue. Jednak nie mogę tego zrobić. Próbowałem keyValuePair, który pokazuje "[nazwa użytkownika, identyfikator]" w polu listy, które nie jest dobre (patrz kod poniżej). Jak mogę symulować wybór html w języku C# w skrócie? Chcę, aby nazwy były wyświetlane w polu listy, ale chcę uzyskać id w backend. Dzięki ...Nie można wykonać pary klucz-wartość w polu listy w C#

LB_UserList.Items.Add(new KeyValuePair<string, string>(full_name, node["user_id"].InnerText)); 
+0

możliwe duplikat [Jak mogę dostać w polu listy element "klucz" w aplikacji C# winforms?] (http://stackoverflow.co m/questions/507354/how-do-i-get-at-the-listbox-items-key-in-c-sharp-winform-app) – Moshtaf

Odpowiedz

14

używać C# dictionary do tego,

Dictionary<string, string> list = new Dictionary<string, string>(); 
list.Add("item 1", "Item 1"); 
list.Add("item 2", "Item 2"); 
list.Add("item 3", "Item 3"); 
list.Add("item 4", "Item 4"); 

dropdown.DataSource = list; 
dropdown.DataTextField = "Value"; 
dropdown.DataValueField = "Key"; 
dropdown.DataBind(); 

EDIT:

listBox.DataSource = new BindingSource(list, null); 
listBox.DisplayMember = "Value"; 
listBox.ValueMember = "Key"; 
+0

DataTextField, DataValueField i DataBind brakuje w ListBox w C#. W przypadku DataSource pojawia się ten błąd: "Complex DataBinding akceptuje jako źródło danych albo IList, albo IListSource." Jednak dzięki za szybką odpowiedź :) – Mehmed

+1

zobacz zaktualizowaną odpowiedź –

+0

Zaktualizowany kod działa świetnie. Dzięki! – vkapadia

Powiązane problemy