在下面的代码中,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
结束班
答案 0 :(得分:1)
查看表单的控件集合。您可以根据其名称找到项目。
同时查看此答案 VB .NET Access a class property by string value
因此,您可以使用字符串,将其拆分为“。”,使用Controls Collection找到控件,然后使用Reflection使用字符串的后半部分获取属性。
当然,如果您只是在寻找文本框的文本,您只需要使用该集合并忘记反射。像这样......
For i As Integer = 1 To 25
.fields("Field" & i).value = Me.Controls("QAR" & i).Text
Next
答案 1 :(得分:0)
你可以按照Reflection的要求做你所要求的...我不喜欢这样的事情,但这就是你的代码中的样子:
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
这会将文本框的值设置为“Hello”,然后使用反射方法将其复制到文本框b。
希望这有帮助!