【问题标题】:VB.net Express 2010 eval?VB.net Express 2010 评估?
【发布时间】:2013-07-28 06:14:02
【问题描述】:

场景是这样的: 我想使用组合框设置 formborderstyle。

我可以使用这些方法成功地将边框样式设置为“无”:

Form1.FormBorderStyle = 0

或者

Form1.FormBorderStyle = Windows.Forms.FormBorderStyle.None

我怎么能用字符串做到这一点?

Dim formstyle As String
formstyle = "Windows.Forms.FormBorderStyle." & ComboBox1.Text
Form1.FormBorderStyle = formstyle

我收到此错误:从字符串“Windows.Forms.FormBorderStyle.No”到类型“Integer”的转换无效。


好像 Form1.formborderstyle 只接受整数。在不实际使用整数的情况下,有没有办法可以将字符串转换为对应的整数...有点像 eval?

最终我希望它看起来像:

Dim formstyle As String
formstyle = "Windows.Forms.FormBorderStyle." & ComboBox1.Text
Form1.FormBorderStyle = eval(formstyle)

【问题讨论】:

  • 你的问题标题和问题有什么关系?

标签: vb.net


【解决方案1】:

使用Enum.(Try)Parse:

Enum.Parse

将一个或多个枚举常量的名称或数值的字符串表示形式转换为等效的枚举对象。

文档和this answer 有一个语法示例。你可能会追求类似的东西:

Form1.FormBorderStyle = CType([Enum].Parse(GetType(FormBorderStyle), ComboBox1.Text), FormBorderStyle)

【讨论】:

  • 由于某种原因,我得到:未找到请求的值“Windows.Forms.FormBorderStyle.None”。
  • 尝试只使用None。枚举不知道他们的命名空间。他们只知道自己的价值观。
  • @user1950278 看看我写的例子和你的比较。我不会将 Windows.Forms.FormBorderStyle. 连接到枚举名称的开头。
猜你喜欢
  • 2015-03-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多