【问题标题】:Represent Enum values as String将枚举值表示为字符串
【发布时间】:2023-03-04 14:04:01
【问题描述】:

我有这个枚举

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)

我希望得到这个输出作为字符串:

CONTROL, ALT

因为如果我尝试对框架枚举做同样的事情,例如 Keys 枚举:

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

我得到这个字符串:

ControlKey, Alt

那么我在枚举中缺少什么?

【问题讨论】:

    标签: .net vb.net string enums


    【解决方案1】:

    你需要用FlagsAttribute装饰你的枚举。

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

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

    【讨论】:

    • 谢谢,解决了!但我应该使用标志或标志属性?智能感知对两者都说相同,我也找不到区别
    • @ElektroStudios:它们是相同的——当你指定一个属性时,Attribute 后缀是隐式的(但也可以显式指定)。
    【解决方案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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-09-30
      • 1970-01-01
      • 2017-05-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多