结合枚举

dig*_*uru 27 .net vb.net enums

有没有办法在VB.net中组合Enums?

Dav*_*ell 42

我相信你想要的是一个旗帜类型枚举.

您需要将Flags属性添加到枚举的顶部,然后您可以将枚举与"Or"关键字组合.

像这样:

<Flags()> _
Enum CombinationEnums As Integer
  HasButton = 1
  TitleBar = 2
  ReadOnly = 4
  ETC = 8
End Enum
Run Code Online (Sandbox Code Playgroud)

注意:右边的数字总是两倍大(2的幂) - 这需要能够分离已经设置的各个标志.

使用Or关键字组合所需的标志:

Dim settings As CombinationEnums
settings = CombinationEnums.TitleBar Or CombinationEnums.Readonly
Run Code Online (Sandbox Code Playgroud)

这将TitleBar和Readonly设置为枚举

要检查已设置的内容:

If (settings And CombinationEnums.TitleBar) = CombinationEnums.TitleBar Then
  Window.TitleBar = True
End If
Run Code Online (Sandbox Code Playgroud)

  • 如果您使用的是.NET 4,那么您可以使用.HasFlag方法使代码更容易阅读 - 如果settings.HasFlag(CombinationEnums.TitleBar)那么等等等等 (12认同)