2011-10-04 62 views
1

我在形式的枚舉:如何創建一個「內聯」對象來包含ComboBox的成員?

Public Enum MyCollections As Integer 
    My_Stuff = 0 
    My_Things = 1 
End Enum 

我想在一個ComboBox使用這些作爲值,但我想分別顯示字符串「我的物品」和「我的東西」。

我確定我見過一種快速創建某種局部對象定義的方法,我可以指定要顯示的字符串屬性,以及一個「MyCollections」類型屬性來存儲枚舉元素的值,但我無法想象如何向搜索引擎解釋這一點。

任何人都可以將我的模糊記憶插入一些代碼中,我可以使用它爲我的ComboBox設置一個DataSource並在用戶更改選擇時檢索數據?

回答

0

對,它看起來好像我在想「匿名類型」。下面是一些代碼,回答(不同,很模糊)的問題,我是想問:

Private Sub TestCodeForm_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load 
    Dim addOutcomes As New Collection 
    For Each enumIn As MyCollections In [Enum].GetValues(GetType(MyCollections)) 
     addOutcomes.Add(New With {.Display = [Enum].GetName(GetType(MyCollections), enumIn), .Value = enumIn}) 
    Next 

    Me.ComboBox1.DisplayMember = "Display" 
    Me.ComboBox1.ValueMember = "Value" 
    Me.ComboBox1.DataSource = addOutcomes 
End Sub 

Private Sub ComboBox1_SelectedIndexChanged(sender As System.Object, e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged 
    MsgBox("Display: " & CType(sender, ComboBox).SelectedItem.Display & vbCrLf & 
      "Value: " & CType(sender, ComboBox).SelectedItem.value.GetType.ToString) 
End Sub 
2

我喜歡創建一個簡單的對象,並用我的簡單對象的集合來填充ComboBox。然後我將ComboBox的DisplayMember屬性設置爲我想從簡單對象顯示的屬性的名稱。

'Something like this 
Class SimpleObject 
    Property Name As String 
End Class 

'And then later... 
comboBox.DisplayMember = "Name" 
+0

是的,我同意,但我有一個心理癢現在,關於我的問題的特定主題,我希望有人會過來抓它。我最終可能會按照你的建議選擇做事,我只是想在記憶冊裏填上一個空白頁,如果你明白我的意思......我真的覺得我昨晚應該睡得更多...... – Frosty840

+0

好,很酷。對不起,我不記得你做了什麼;)我發現自己也試圖固定舊的解決方案,他們很難記住! – jrsconfitto

1

我想這是你想要的 - 它枚舉枚舉,列出了值和值的文本字符串(取出下劃線):

Dim enumValue As Integer, enumName As String 
    For Each enumValue In System.Enum.GetValues(GetType(MyCollections)) 
     enumName = System.Enum.GetName(GetType(MyCollections), enumValue).Replace("_", " ") 
     Debug.WriteLine(enumValue.ToString + ";" + enumName) 
    Next 

輸出:

0;My Stuff 
1;My Things 

把這些數據放到一個組合框中將需要一個數據綁定,你的情況將會是probably require a custom class,但上面的代碼可能會讓你開始。

相關問題