說我有以下枚舉:填充控制從一個枚舉
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