2014-11-06 72 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