【问题标题】:How to concat string with For Varible Vb如何使用 For Variable Vb 连接字符串
【发布时间】:2014-11-15 00:26:16
【问题描述】:

我有 16 个项目,名为 q1,q2,q3,...,q16 和 txt_q1,txt_q2,...,txt_q16 我需要检查每一个,所以我有一个 for 和里面我有这样的 If:

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

这个想法是用 For 检查所有项目以避免 16 个 If,但我有语法错误。 我能做什么?

txt_q1,txt_q2... 是 asp:labels 的 ID,我有一个单选按钮列表,所以我得到单选按钮文本并将 q1、q2、q3... 设置为相应的单选按钮列表。所以我想检查是否有一个未选中的单选按钮列表,如果没有,我将颜色更改为蓝色到 asp:label。所以我想避免为每个单选按钮列表创建 16 个 if,并使用 For,因为变量中唯一的变化是数字是相同的“q”和相同的“txt_q”,所以我想将数字添加到"q" 或 "txt_q" 使其成为一个名为 q1 或 txt_q1 的变量,它们已经存在,这样就可以访问 txt_q1.Style.Add() 并更改该标签的颜色。

谢谢

【问题讨论】:

  • 这些items是什么?有点像您正在尝试使用字符串作为对象引用。
  • 是变量作为单选按钮文本中的字符串
  • 仍不清楚,但"txt_q"&cnt.Style.Add... 几乎可以肯定永远不会工作。如果您尝试创建控件引用,请使用带有 Me.Controls() 的名称
  • 我认为最好使用 array(16) 代替 16 个变量,如果 q1 是一个变量,你不能像 "q"&1 那样检查
  • 嗯,连接"txt_q"&cnt.Style.Add()的思路就等于txt_q1.Style.Add(),txt_q2.Style.Add()...等

标签: asp.net vb.net


【解决方案1】:

仅供您理解:

当你写 "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

【讨论】:

    猜你喜欢
    • 2023-04-04
    • 2017-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-02
    相关资源
    最近更新 更多