2014-11-06 70 views
0

是否存在用于将对象属性表示为变量的数据类型?即TextBox1.Text作为变量?对象属性的变量数据类型而不是属性值?

我不是试图实现其作为字符串数据类型变量的文本,也不是控制作为对象数据类型。相反,我试图实现...

Dim userCountry As String 
favouriteCar = ComboBox1.Text 

Dim mostPopularCar As ? 
mostPopularCar = TextBox1.Text 

Select Case userCountry 
    Case "Canada" 
     mostPopularCar = "Hyundai" 
    Case "USA" 
     mostPopularCar = "Ford" 
    Case "China" 
     mostPopularCar = "Volkswagon" 
    Case "Uganda" 
     mostPopularCar = "Toyota" 
End Select 

归根结底,而不是写TextBox1.Text =,我想写mostPopularCar =

...或者,当我真正需要做的只是在每个对象的每次迭代中附加.Text时,我是否简单地在定义任何变量方面做得太过分?

+1

所以你想做的事,是一个参考Textbox1.Text财产,而不是工作属性的值? 无论如何,在这个例子中你是对的,使用“MostPopularCar”变量是一个矫枉过正的,因为你不想用read值做什么,你只是想改变它。 – lsteinme 2014-11-06 09:16:02

+0

@lsteinme正确。根据上面的例子,我不想编写'TextBox1.Text =',我想编写'mostPopularCar ='。还请注意我的最终调查(见最后一句)。 – 2014-11-06 09:19:25

+0

@lsteinme刚刚注意到你的编辑。感谢您澄清这是过度的。这就是我真正需要知道的。 – 2014-11-06 09:28:04

回答

0

访问对象的属性,你可以像这样做,如果你真的想使用varibale(也许是因为要保存旧值或做什么取决于它)

Sub whatever() 
     Dim userCountry As String = "USA" 
     changeText(Textbox1.Text, userCountry) 
    End Sub 

    Private Sub changeText(ByRef mostPopularCar As String, userCountry As String) 
     Select Case userCountry 
      Case "Canada" 
       mostPopularCar = "Hyundai" 
      Case "USA" 
       mostPopularCar = "Ford" 
      Case "China" 
       mostPopularCar = "Volkswagon" 
      Case "Uganda" 
       mostPopularCar = "Toyota" 
     End Select 
    End Sub 
+0

考虑到将属性定义为变量的目的是为了简化我的代码,可用解决方案(您提供的内容)似乎引入了比未将属性定义为变量更大的复杂性。根据您的评论,我会放弃将属性定义为变量的“矫枉过正”,而只是将其写成完整形式(Object.Property =“String”')。 – 2014-11-06 09:32:50

0

你的问题还不够清楚(至少对我而言)。

,但如果我理解正确的话,你可以使用System.Reflection.PropertyInfo类型由他们的名字 即

Dim textProperty As System.Reflection.PropertyInfo = TextBox1.GetType().GetProperty("Text") 
Dim textValue As String = textProperty.GetValue(TextBox1) 
+0

为了清晰起见,我添加了一个额外的句子。请参阅第二行(以“最终”开头)。 – 2014-11-06 09:23:37

+1

您可以使用我在之前的答案中发布的代码,并使用textProperty.SetValue方法分配值 – Mahdy 2014-11-06 09:36:41

+0

明白。干杯。 – 2014-11-06 12:16:43