2011-04-11 47 views
1

我無法從使用C#的WinForms中獲得ComboBox的值。如何從c#中的組合框中獲取值?

我有一個ComboBox填充值的列表,我已經設置了ValueMemberDisplayMember

現在,我必須找到所選ComboBox項目的值,並在UI中選擇匹配的項目。

這裏是我的意思是: -

我裝了ComboBox這樣的: -

var list = (from l in db.Loc 
      orderby l.LName ascending 
      select l).ToList(); 
list.Insert(0, new Loc { ID = "-1", Name = "--Select--" }); 
cmb1.BindingContext = new BindingContext(); 
cmb1.DataSource = list; 
cmb1.DisplayMember = "Name"; 
cmb1.ValueMember = "ID"; 

現在一個事件,我想匹配值(ID),並選擇該項目。如果我匹配Text屬性很容易:

cmb1.Text = data.Name; 

但如何匹配值?

事情是這樣的: -

cmb1.Value = data.ID; 
+0

數據源綁定到組合框,您可以直接通過組合框數據源訪問數據。你能解釋一下你想做什麼嗎? – mservidio 2011-04-11 15:35:09

回答

2

這應該工作:

cmb1.SelectedValue = data.ID; 
1

data必須是綁定到comboboxlist,則:

cmb1.SelectedItem = data 

,或者,如果它不是(你從什麼地方獲取的另一個實例):

cmb1.SelectedValue = data.ID 
0

您可以使用Combo1.SelectedIndex財產。您可以使用獲得該項目無論是Combo1.SelectedItemCombo1.Items[Combo1.SelectedIndex]

3

如果你只知道該項目的ID,你也可以使用:

cmb1.SelectedValue = data.ID; 
+0

我認爲不需要'ToString()'。 – Homam 2011-04-11 15:42:28

+0

@霍馬姆 - 你的權利,虐待編輯。最近太多的ASP.net! – WraithNath 2011-04-11 15:47:51

1

你爲什麼想將「匹配」值分配給組合框值屬性? 只要您正確設置了DisplayMember和ValueMember,並且您的DataSource將兩者都實現爲屬性,則值將自動「匹配」,例如,你可以在你的事件處理函數中讀取Value屬性來獲得這個「匹配」值。

1

首先:cmb1.Text = text;ComboBox的文字更改爲指定值。它不會選擇文本與指定值匹配的項目。

使用cmb1.SelectedValue = value;選擇speciefied值的項目。

+0

我想使用文本屬性從列表中選擇項目也只是工作。 我用這個工作就像一個魅力。 – 2016-01-15 06:59:49