通过字符串设置对象字段

set object field via string

编辑:完全重新编辑以更清楚地说明问题:

我做的时候没想到会成功:

   Dim Label1 As Label
    Dim testvar As String = "BottomRight"
    Dim testalign As ContentAlignment
    testalign = ContentAlignment.testvar
    Label1.TextAlign = testalign

"BottomRight" 是您在智能感知中获得的众多选择之一。使用字符串是因为完整代码根据字符串变量将 'Label1.textalign' 设置为不同的设置。

显然 ContentAlignment.testvar 抛出了一个错误。我需要保留由字符串值设置的可枚举。完全无法理解这个问题 - 概念对于我的阶段来说太先进了,但是有什么办法可以实现这个目标吗?两天寻找和失去希望..

如果您必须使用字符串变量,您有两个选择:

选项一

Enum.Parse

选项二

Select Case

Select Case testvar.Trim.ToLower
    Case "bottomright"
        testalign = ContentAlignment.BottomRight

    Case ....
End Select

终于!在 Sam 的指导下,方法如下:

    Dim Label1 As Label
    Dim testvar As String = "BottomRight"
    Dim testalign As New ContentAlignment
    testalign = CType([Enum].Parse(GetType(ContentAlignment), testvar), ContentAlignment)
    Label1.TextAlign = testalign

不确定它是否适用于所有 类 - 它不适用于 colorContentAlignment 下的枚举值被列为 Public 常量 - 因此它们可能必须是这种类型。