.net 如何创建一个;内联“;对象以包含组合框的成员?

.net 如何创建一个;内联“;对象以包含组合框的成员?,.net,vb.net,winforms,combobox,.net,Vb.net,Winforms,Combobox,我的列举如下: Public Enum MyCollections As Integer My_Stuff = 0 My_Things = 1 End Enum 我希望在组合框中使用这些值,但我希望分别显示字符串“My Stuff”和“My Things” 我确信我已经看到了一种快速创建某种本地对象定义的方法,在这种方法中,我可以指定要显示的字符串属性和存储枚举元素值的“MyCollections”类型属性,但我一辈子都想不出如何向搜索引擎解释这一点 有人能把我模糊的记忆插入一

我的列举如下:

Public Enum MyCollections As Integer
    My_Stuff = 0
    My_Things = 1
End Enum
我希望在组合框中使用这些值,但我希望分别显示字符串“My Stuff”和“My Things”

我确信我已经看到了一种快速创建某种本地对象定义的方法,在这种方法中,我可以指定要显示的字符串属性和存储枚举元素值的“MyCollections”类型属性,但我一辈子都想不出如何向搜索引擎解释这一点


有人能把我模糊的记忆插入一些代码中吗?我可以用这些代码为我的组合框设置数据源,并在用户更改选择时检索数据。

我喜欢创建一个简单对象,并用我的简单对象集合填充组合框。然后,我将组合框的属性设置为我希望从简单对象中显示的属性的名称

'Something like this
Class SimpleObject
    Property Name As String
End Class

'And then later...
comboBox.DisplayMember = "Name"

我想这就是您想要的-它枚举枚举,列出值和值的文本字符串(去掉下划线):

输出:


将这些数据放入一个组合框需要一个数据绑定,在您的情况下,它将提供一个数据绑定,但是上面的代码可能会让您开始使用。

对,看起来我想的是“匿名类型”。下面是一些代码,它们回答了我试图提出的(不同的,非常模糊的)问题:

Private Sub TestCodeForm_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
    Dim addOutcomes As New Collection
    For Each enumIn As MyCollections In [Enum].GetValues(GetType(MyCollections))
        addOutcomes.Add(New With {.Display = [Enum].GetName(GetType(MyCollections), enumIn), .Value = enumIn})
    Next

    Me.ComboBox1.DisplayMember = "Display"
    Me.ComboBox1.ValueMember = "Value"
    Me.ComboBox1.DataSource = addOutcomes
End Sub

Private Sub ComboBox1_SelectedIndexChanged(sender As System.Object, e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged
    MsgBox("Display: " & CType(sender, ComboBox).SelectedItem.Display & vbCrLf &
           "Value: " & CType(sender, ComboBox).SelectedItem.value.GetType.ToString)
End Sub

是的,我同意这一点,但是关于我问题的具体主题,我现在有一种精神上的渴望,我希望有人会来帮我抓挠它。我可能最终会选择按照你建议的方式做事,我只是想填补我记忆书中的一页空白,如果你明白我的意思的话。。。我真的觉得我昨晚应该多睡一会儿……好吧,酷。对不起,我不记得你做了什么;)我发现自己也在试图找出旧的解决方案,它们很难记住!
0;My Stuff
1;My Things
Private Sub TestCodeForm_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
    Dim addOutcomes As New Collection
    For Each enumIn As MyCollections In [Enum].GetValues(GetType(MyCollections))
        addOutcomes.Add(New With {.Display = [Enum].GetName(GetType(MyCollections), enumIn), .Value = enumIn})
    Next

    Me.ComboBox1.DisplayMember = "Display"
    Me.ComboBox1.ValueMember = "Value"
    Me.ComboBox1.DataSource = addOutcomes
End Sub

Private Sub ComboBox1_SelectedIndexChanged(sender As System.Object, e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged
    MsgBox("Display: " & CType(sender, ComboBox).SelectedItem.Display & vbCrLf &
           "Value: " & CType(sender, ComboBox).SelectedItem.value.GetType.ToString)
End Sub