以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  将字符串转化成一个枚举类型  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=52612)

--  作者:jspta
--  发布时间:2014/6/19 9:36:00
--  将字符串转化成一个枚举类型
有没有办法,将字符串转化成一个枚举类型
比如已知字符串 “ControlTypeEnum” 最终获取该枚举的枚举值,代码如何写?求教


--  作者:Bin
--  发布时间:2014/6/19 9:43:00
--  
Dim b As ControlTypeEnum
For Each e As String In  ControlTypeEnum.GetNames(b.Gettype())
 output.show(e)
Next

--  作者:有点甜
--  发布时间:2014/6/19 9:55:00
--  

 代码这样写

 

Dim label As ControlTypeEnum = [Enum].Parse(Gettype(ControlTypeEnum), "Label")


--  作者:jspta
--  发布时间:2014/6/19 10:02:00
--  
我可能没说明白,一共可能是三部分,关键如何实现3。  这个字符串事先不知道的,随机的获得的 
1.我获得一个字符串,叫 “ControlTypeEnum”  ,也可能是其它
2.然后根据这个字符串我要获得这个字符串对应的枚举类型(不是枚举值),
3.然后获得该枚举类型中所有的值,

--  作者:有点甜
--  发布时间:2014/6/19 10:13:00
--  

代码

 

Dim Code As String
Code = "Dim t As " & "ControlTypeEnum" & vbcrlf
Code = Code & "return t"
Functions.Add("getType",Code)
Functions.Complie()

Dim b As object = Functions.Execute("getType")
Functions.Remove("getType")

For Each e As String In  [Enum].GetNames(b.Gettype())
    output.show(e)
Next


--  作者:jspta
--  发布时间:2014/6/19 13:07:00
--  
这个要预先编译一下啊,还有木有更好的方案那。
也可以用用,谢谢了。

--  作者:don
--  发布时间:2014/6/19 13:19:00
--  
學習,簡化5樓的:

Dim CTE As ControlTypeEnum
For Each s1 As String In  [Enum].GetNames(CTE.Gettype())
    output.show(s1)
Next

--  作者:wfkbabro
--  发布时间:2021/1/10 22:03:00
--  
一定收藏。