将Enum值表示为String

时间:2013-11-18 13:45:56

标签: .net vb.net string enums

我有这个枚举

Public Enum HotkeyModifiers As Short
    SHIFT = 1
    CONTROL = 2
    ALT = 4
    NONE = 0
End Enum

所以6等于ALT+CONTROL,所以当我这样做时:

 MsgBox((HotkeyModifiers.CONTROL Or HotkeyModifiers.ALT).ToString)
MsgBox([Enum].Parse(GetType(HotkeyModifiers), 6).ToString)

我希望将此输出作为String:

CONTROL, ALT

因为如果我尝试使用例如Keys枚举的框架枚举:

MsgBox((Keys.Alt Or Keys.ControlKey).ToString)

我收到这个字符串:

ControlKey, Alt

然后我在枚举中缺少什么?

2 个答案:

答案 0 :(得分:4)

您需要使用FlagsAttribute修饰枚举。

<Flags>
Public Enum HotkeyModifiers As Short
    SHIFT = 1
    CONTROL = 2
    ALT = 4
    NONE = 0
End Enum

这会影响ToString和解析的行为。

答案 1 :(得分:2)

在执行以下操作时似乎没有任何问题:

    Private Enum enumModul As Integer
        Modul_1 = 1
        Modul_2 = 2
        Modul_3 = 3
        Out_of_work = 4
        Pause = 5
    End Enum

    Dim Modul As enumModul = 0

    Label3.Text = Modul.ToString