2013-02-26 53 views
1

我有一個組合框ValueMember = IDDisplayMember = Name。我需要用這個名字,所以我做這樣的事情有關聯的值:C# - 從組合框中檢索選定的值

if (cboTypeOfMaterial.SelectedIndex != -1) 
      { 
       string temp = cboTypeOfMaterial.SelectedValue.ToString(); 
       //More code here... 
      } 

它返回ID值作爲一個字符串。例如 - 「7」。

如果我嘗試:

if (cboTypeOfMaterial.SelectedIndex != -1) 
       { 
        string temp = cboTypeOfMaterial.DisplayMember.ToString(); 
        //More code here... 
       } 

我得到的字符串Name這是關鍵。

而我需要的是讓所選元素的Name

+0

只需cboTypeOfMaterial.SelectedItem.ToString()也應該工作。試一試。 – 2013-02-26 07:49:12

回答

4

SelectedValue將返回ValueMember定義的屬性值,SelectedItem將返回所選的全部對象,如果你想獲得比你SelectedValue你將不得不投作爲對象在ComboBox那麼你之外的其他價值可以訪問您的Name屬性。

string temp = (cboTypeOfMaterial.SelectedItem as YourObjectType).Name; 
+0

謝謝,這個作品,是新的東西,所以我會用它! – Leron 2013-02-26 07:52:53

4

嘗試通過SelectedItem訪問元素,這將給你與該條目相關聯的整個對象的價值,那麼你就可以訪問你需要的屬性,在你的情況下ID

0
string temp = cboTypeOfMaterial.ValueMember.ToString(); 
1

你可以做的是創建一個自定義類在下拉列表中的條目。這可以是這樣的:

public class ComboBoxItem 
{ 
    public string Display { get; set; } 
    public int Id { get; set; } 
    public override string ToString() 
    { 
     return this.Display; 
    } 
} 

那麼你可以通過下面的代碼獲得所選ComboBoxItem:

ComboBoxItem cbi = (ComboBoxItem)cboTypeOfMaterial.SelectedValue; 
if(cbi != null) 
    // Access the Property you need 
-2

我想你也可以使用Text屬性,但它不是一個很好的解決方案。更好的解決方案是建議@dutzu。

string temp = cboTypeOfMaterial.Text; 
1

我知道這是一個老問題,但我很驚訝沒有人提到:

ComboBox1.GetItemText(ComboBox1.SelectedItem) 

返回所選項目的文本表示(即DisplayMember),是有幫助涉及數據綁定ComboBox或任何ListControl的案件。