将枚举标志传递给 class 或过程
Passing enum flags to a class or procedure
我想将多个枚举(按位)项传递给过程。不是单独而是一起类似于 Messagebox 命令。例如:
MsgBoxStyle.Exclamation + MsgBoxStyle.OkCancel
有很多关于 Flagg 选项等的信息,但没有关于如何作为单个组合变量传递的信息
在 vs2019 中我设置了枚举
<Flags>
Public Enum Options
n = 0
Check = 1
Print = 2
Mail = 4
End
我的职能是
Public Function MyMsg(Text As String, MsgOption As Options) As boolean
一切顺利,当我尝试编写调用时
MyMsg("Lorem luctus non", Options.Print + Options.Mail)
我明白了
重载解析失败,因为在没有缩小转换的情况下无法调用可访问的 'MyMsg':
'Public Function MyMsg(Text As String, MsgOption As Options) As Boolean':参数匹配参数 'MsgOption' 从 'Integer' 缩小到 'Options'
我不想用整数创建函数,否则我会失去显示枚举选项的智能感知,再次类似于 MessageBox。
我能看到问题(从 'Integer' 缩小到 'Options')但看不到如何传递值。
你们谁能guys/gels帮忙吗?
使用这两种方法中的任何一种:都适用于 vs 2019。
MyMsg("Lorem luctus non", Options.Print Or Options.Mail)
或
MyMsg("Lorem luctus non", CType(Options.Mail + Options.Print + Options.Check, Options))
我想将多个枚举(按位)项传递给过程。不是单独而是一起类似于 Messagebox 命令。例如:
MsgBoxStyle.Exclamation + MsgBoxStyle.OkCancel
有很多关于 Flagg 选项等的信息,但没有关于如何作为单个组合变量传递的信息
在 vs2019 中我设置了枚举
<Flags>
Public Enum Options
n = 0
Check = 1
Print = 2
Mail = 4
End
我的职能是
Public Function MyMsg(Text As String, MsgOption As Options) As boolean
一切顺利,当我尝试编写调用时
MyMsg("Lorem luctus non", Options.Print + Options.Mail)
我明白了 重载解析失败,因为在没有缩小转换的情况下无法调用可访问的 'MyMsg': 'Public Function MyMsg(Text As String, MsgOption As Options) As Boolean':参数匹配参数 'MsgOption' 从 'Integer' 缩小到 'Options'
我不想用整数创建函数,否则我会失去显示枚举选项的智能感知,再次类似于 MessageBox。
我能看到问题(从 'Integer' 缩小到 'Options')但看不到如何传递值。
你们谁能guys/gels帮忙吗?
使用这两种方法中的任何一种:都适用于 vs 2019。
MyMsg("Lorem luctus non", Options.Print Or Options.Mail)
或
MyMsg("Lorem luctus non", CType(Options.Mail + Options.Print + Options.Check, Options))