说我有以下枚举:
Public Enum TimeUnit
Day
Week
Month
Year
End Enum
有什么方法可以使用这个枚举来填充ComboBox或ListBox?理想情况下,我希望控件将内部表示形式作为插入值(即Day
,而不是0
)。
如果有更好的方法可以解决这个问题(参见' X / Y问题'),我的基本要求是我必须能够使用TimeUnit
/ em>枚举,即作为一种类型。我也真的喜欢避免在代码中重复自己。
答案 0 :(得分:1)
我假设你想使用枚举作为值传递给某个方法。您可以将枚举值分配给 ItemData 属性,将文字值分配给Item(用户看到的文本)。我建议使用Bob77的命名约定并编写一个方法来填充你的组合框或列表框控件。像下面这样的东西应该有效。
Private Sub LoadCombo()
Combo1.Clear
Combo1.AddItem "Day"
Combo1.ItemData(Combo1.NewIndex) = TimeUnit.Day
Combo1.AddItem "Week"
Combo1.ItemData(Combo1.NewIndex) = TimeUnit.Week
Combo1.AddItem "Month"
Combo1.ItemData(Combo1.NewIndex) = TimeUnit.Month
Combo1.AddItem "Year"
Combo1.ItemData(Combo1.NewIndex) = TimeUnit.Year
End Sub
Private Sub Combo1_Click()
MsgBox "You have selected " & Combo1.Text & " (" & CStr(Combo1.ItemData(Combo1.ListIndex)) & ")"
End Sub