在VB中使用Textbox的内容作为变量(2012)

时间:2013-04-12 17:07:14

标签: vb.net variables textbox

在下面的代码中,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

结束班

2 个答案:

答案 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。

希望这有帮助!