2014-11-14 66 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