另一個使用反射的例子。這將適用於字段或屬性。他們可以是公共或私有的,你不必案例完全匹配:
Try
Dim FI As System.Reflection.FieldInfo = Me.GetType.GetField(TextBox1.Text, Reflection.BindingFlags.IgnoreCase Or Reflection.BindingFlags.Instance Or Reflection.BindingFlags.Public Or Reflection.BindingFlags.NonPublic)
If Not IsNothing(FI) Then
FI.SetValue(Me, TextBox2.Text)
Else
Dim PI As System.Reflection.PropertyInfo = Me.GetType.GetProperty(TextBox1.Text, Reflection.BindingFlags.IgnoreCase Or Reflection.BindingFlags.Instance Or Reflection.BindingFlags.Public Or Reflection.BindingFlags.NonPublic)
If Not IsNothing(PI) Then
PI.SetValue(Me, TextBox2.Text)
Else
MessageBox.Show(TextBox1.Text, "Field or Property not found!")
End If
End If
Catch ex As Exception
MessageBox.Show(ex.Message, "Unable to Set Value")
End Try
可能要看看這個問題:使用包含在.NET中的變量名的字符串訪問一個方法局部變量的值](http://stackoverflow.com/questions/19254325/access-a-methods-local-variable-value-using-a-string-containing-the-variable-nam) – kaveman 2014-12-04 01:29:57
做到這一點的唯一方法是隻需使用case語句,檢查輸入的值並設置相關變量。既然你必須提前知道變量名以將其輸入到TextBox1中,這似乎是一個毫無意義的問題 - 從UI的角度來看這是一個可怕的想法,並且有更好的方法來完成同樣的事情。 – 2014-12-04 01:31:09
你有一個很好的想象力。是什麼讓你相信這樣的事情是可能的?即使可能,您也必須指定「TextBox1」,而不是「TextBox1.Text」。 – 2014-12-04 01:55:07