说我有以下枚举:填充控制从一个枚举
Public Enum TimeUnit
Day
Week
Month
Year
End Enum
有什么办法,我可以使用此枚举来填充组合框或列表框?理想情况下,我希望控件将内部表示作为插入值回显(即Day
,而不是0
)。
如果有一个更好的方式去关心这个(CF“X/Y问题”),我的基本要求是,我必须能够使用TimeUnit
类似枚举,即作为一个类型在自身。我也想真的喜欢避免在代码中重复自己。
说我有以下枚举:填充控制从一个枚举
Public Enum TimeUnit
Day
Week
Month
Year
End Enum
有什么办法,我可以使用此枚举来填充组合框或列表框?理想情况下,我希望控件将内部表示作为插入值回显(即Day
,而不是0
)。
如果有一个更好的方式去关心这个(CF“X/Y问题”),我的基本要求是,我必须能够使用TimeUnit
类似枚举,即作为一个类型在自身。我也想真的喜欢避免在代码中重复自己。
我假设你想使用枚举作为值传递给某些方法。您可以将枚举值分配给ItemData属性,并将文字值赋予项目(用户看到的文本)。我建议使用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
请注意,I * do *表示VB6,而不是VB.NET。 :-) – 2015-02-24 16:46:35
你不想这样做。如果您尝试为枚举成员使用“友好”UI命名,则会遇到保留字碰撞或超载半保留字,并且通常会在您的手中混乱。 ''日''和上面显示的其余部分已经有了意义,所以通常会命名为'tuDay',无论如何都是为了避免名称空间冲突。 – Bob77 2015-02-24 17:20:38
@ Bob77不够公平。如果您提出了一种替代方法,我会适当修改问题以便就基本问题提出问题。我真的不明白这样做的好方法。 (至少,不是用我掌握的语言的知识:我仍在训练中。) – 2015-02-24 17:23:31