VB.NET为组合框重命名枚举

VB.NET为组合框重命名枚举,vb.net,combobox,enums,rename,Vb.net,Combobox,Enums,Rename,我陷入困境,希望有人能帮助我。 我想更改我的枚举项名称,以便它们在组合框中显示不同 Public Enum Conditions VeryGood Good JustOkey Poor End Enum 在我看来: ComboBox_Cond.Items.AddRange([Enum].GetNames(GetType(Conditions))) ComboBox_Cond.DropDownStyle = ComboBoxStyle.DropDownList

我陷入困境,希望有人能帮助我。 我想更改我的枚举项名称,以便它们在组合框中显示不同

Public Enum Conditions
    VeryGood
    Good 
    JustOkey
    Poor
End Enum
在我看来:

ComboBox_Cond.Items.AddRange([Enum].GetNames(GetType(Conditions)))
ComboBox_Cond.DropDownStyle = ComboBoxStyle.DropDownList
ComboBox_Cond.SelectedIndex = CInt(Conditions.JustOkey)
在我的组合框中:

Private Sub ComboBox_Cond_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboBox_Cond.SelectedIndexChanged
    ComboBox_Cond.Items.Add(Conditions.VeryGood).ToString("Very good")
    ComboBox_Cond.Items.Add(Conditions.Good).ToString("Good")
    ComboBox_Cond.Items.Add(Conditions.JustOkey).ToString("Just okey")
    ComboBox_Cond.Items.Add(Conditions.Poor).ToString("Poor")
End Sub
结果正如您所想象的,我在组合框列表中得到了“原始”枚举名和ToString名

提前谢谢你

您可以拥有(键、值)对,因此最简单的方法可能是创建字典:

Dim dict As New Dictionary(Of Conditions, String)
With dict
  .Add(Conditions.VeryGood, "Very good")
  '...
  .Add(Conditions.Poor, "Poor")
End With

然后使用数据绑定,而不是
组合框\u Cond.Items.AddRange

ComboBox_Cond.ValueMember = "Key"
ComboBox_Cond.DisplayMember = "Value"
ComboBox_Cond.DataSource = dict.ToList

然后,您可以使用
ComboBox\u Cond.SelectedValue

ComboBox\u Cond.Items.AddRange([Enum].GetNames(GetType(Conditions)))访问
条件
值,除非有其他代码执行某些操作(如第二个代码块),如果不清楚,可以使用
Enum.Parse
非常简单地将选择转换回来。我只想让组合框显示ToString名称,用“非常好”而不是“非常好”。@Televinken:你检查过我的答案了吗?看起来正是你需要的。谢谢@neolik。我对这个有点陌生,在我的主要类的顶部,我应该在哪里编写字典?@Televinken:从我在代码中看到的情况来看,你不需要它作为类变量。您可以将其替换为
ComboBox\u Cond.Items.AddRange
,然后查看它是否有效
ComboBox\u Cond.SelectedValue
将为您获取
Conditions
值,我认为您需要这些值。这里的要点是,您不必重新转换,它将由.NET为您完成。