Public Enum Fruit Red_Apple = 1 Oranges Ripe_Banana End Enum Private Sub InitCombosRegular() Dim d1 As New Dictionary(Of Int16,String) For Each e In [Enum].GetValues(GetType(Fruit)) d1.Add(CShort(e),Replace(e.ToString,"_"," ")) Next ComboBox1.DataSource = d1.ToList ComboBox1.DisplayMember = "Value" ComboBox1.ValueMember = "Key" ComboBox1.SelectedIndex = 0 End Sub 'This fails Dim combo1 = DirectCast(ComboBox1.SelectedValue,Fruit) ' Fails 'these both work Dim combo2 = DirectCast(CInt(ComboBox1.SelectedValue),Fruit) 'works Dim combo3 = CType(ComboBox1.SelectedValue,Fruit) 'works
为什么CType工作和DirectCast不具有相同的语法?然而,如果我在SelectedCast之前将selectedValue转换为int,那么它可以工作
问候
_Eric