我想做一個函數,可以採取枚舉類型,顯示所有可能的選擇給用戶,讓他們選擇一個,然後將其傳回。泛型不允許你限制枚舉。我有代碼工作會來回轉換,但我希望它接受並返回相同的枚舉類型。抽象枚舉選擇框
此代碼的工作,但沒有得到很好的,因爲我想:
公共功能getEnumSelection(BYVAL所有者Windows.Forms.IWin32Window,BYVAL sampleValue爲[枚舉],字幕BYVAL作爲字符串)作爲字符串
Dim names As String() = [Enum].GetNames(sampleValue.GetType)
Using mInput As New dlgList
mInput.ListBox1.Items.Clear()
For Each name As String In names
mInput.ListBox1.Items.Add(name)
Next
mInput.ShowDialog(owner)
Return mInput.ListBox1.SelectedItem.ToString
End Using
End Function
它運行後,我可以[枚舉] .parse直接調用者的枚舉類型,因爲我有權訪問它,但我想消除這個手動步驟。
我希望能夠返回相同的枚舉類型,或者至少將分析返回到我接收到的值並將其轉換爲此函數但它似乎不允許此行。 Dim result As Object = [Enum] .Parse(GetType(sampleValue),mInput.ListBox1.SelectedItem.ToString,True)
它說sampleValue不是一個類型。所以...我如何獲得sampleValue的類型來解析?
或者是否有另一種方法可以輕鬆地和一般地允許用戶選擇一個枚舉值,而無需爲每個枚舉手動編寫映射函數?
我用下面的喜歡它改變 返回DirectCast([枚舉] .Parse(的GetType(T),mInput.ListBox1.SelectedItem.ToString),T) 和 公共功能getEnumSelection(效應的T作爲結構)(BYVAL所有者作爲Windows.Forms.IWin32Window,ByVal字幕作爲字符串)作爲T – Maslow 2009-02-11 12:26:59