0

在下面的代码中,b 文本框将包含字符串“a.text”,我希望 b 文本框作为字符串“a.text”的内容的评估,即单词 Test。请不要建议: b.text = a.text

Public Class Form1

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    Dim t As String
    a.Text = "Test"
    t = "a.text"
    b.Text = t
End Sub

结束类

4

2 回答 2

1

查看表单的控件集合。您可以根据其名称找到一个项目。

另请查看此答案 VB .NET Access a class property by string value

因此,您可以获取您的字符串,用“.”分割它,使用控件集合找到控件,然后使用反射使用字符串的后半部分获取属性。

当然,如果你只是在寻找文本框的Text,你只需要使用集合而忘记反射。像这样..

    For i As Integer = 1 To 25
        .fields("Field" & i).value = Me.Controls("QAR" & i).Text
    Next
于 2013-04-12T17:44:29.580 回答
0

你可以做你要求使用反射......我不是这样的东西的超级粉丝,但这是它在你的代码中的样子:

Imports System.Reflection

Public Class Form1

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        a.Text = "Hello"

        Dim t As String = "a.Text"

        b.Text = DirectCast(SetValue(t), String)
    End Sub

    Public Function SetValue(ByVal name As String) As Object

        Dim ctrl As Control = Me.Controls(name.Split("."c)(0))
        Return ctrl.GetType().GetProperty(name.Split("."c)(1)).GetValue(ctrl, Nothing)
    End Function
End Class

这会将文本框 a 的值设置为“Hello”,然后使用反射方法将其复制到文本框 b。

希望这可以帮助!

于 2013-04-12T18:37:00.987 回答