2014-11-14 67 views
0

我有16個項目名爲q1,q2,q3,...,q16和txt_q1,txt_q2,...,txt_q16 我需要檢查每個,所以我有一個並裏面我有。如果是這樣的:如何連接字符串用於變量Vb

For Cnt AS Integer = 1 To 16 Step 1 
    If("q"&cnt = "") Then 
     "txt_q"&cnt.Style.Add("color","blue") 
     .... 
     .. 
    End If 
End For 

的想法是檢查人的項目有對於避免16個如果,但我有一個語法錯誤。 我能做什麼?

txt_q1,txt_q2 ...是asp:標籤的ID,我有一個radiobuttonList,所以我得到單選按鈕文本,並將q1,q2,q3設置爲相應的單選按鈕列表。所以我想檢查是否有一個沒有被選中的單選按鈕列表,如果沒有,我將顏色更改爲藍色到asp:標籤。所以我想避免爲每個單選按鈕列表創建16個ifs並使其與For相關聯,因爲變量中唯一改變的是數字是相同的「q」和相同的「txt_q」,所以我想將該數字添加到「q」或「txt_q」使其成爲一個稱爲q1或txt_q1的變量,該變量已經存在,並以此方式訪問txt_q1.Style.Add()並更改該標籤的顏色。

謝謝

+0

這些是什麼'items'?看起來像你試圖使用字符串作爲對象引用。 – Plutonix 2014-11-14 15:41:48

+0

是變量作爲字符串從單選按鈕文本 – Bak 2014-11-14 15:43:12

+0

仍然不清楚,但''txt_q「&cnt.Style.Add ...'幾乎肯定不會工作。如果你正在嘗試創建一個控件引用,請使用'Me.Controls()' – Plutonix 2014-11-14 15:45:21

回答

0

只是你的理解:

當你寫"txt_q"&cnt,要創建一個新的字符串字面持有如"txt_q1","txt_q2"等。這類似於變量的名稱,但實際上完全不同。變量的名稱僅供您在代碼中使用。變量的值是對控制對象的引用。你需要的是獲得對控件的引用。這可以通過幾種方法完成,一種是使用FindControl()方法。

For Cnt AS Integer = 1 To 16 Step 1 
    Dim c = FindControl("q" & cnt) 'pass in the ID here, you will get a reference 
    'you can use c to access the properties e.g. c.Style 
End For 

再次,只是爲了澄清

c.Style 'c is a variable holding a reference to the control 
"c".Style ' "c" is a simple string