【问题标题】:VB.Net Loop controls by names using variablesVB.Net 循环控制使用变量的名称
【发布时间】:2016-06-07 08:43:55
【问题描述】:

我需要设置一些控件的文本。

我有一个Form 和一些CheckBoxes 和一些TextBoxes

VBA(如果我有 5 个名为“TextBox1”、“TextBox2”、...“TextBox5”的文本框)我可以使用这样的东西:

For n = 1 To 5
    Me("TextBox" & n).Text = NeededValue 
Next n

我知道在 VB.Net 中也可以使用类似的方法,但我无法找到正确的语法(我在 SO 上也没有找到类似的代码)。

我尝试过使用

Me.Controls() 

但我不能以这种方式插入控件名称

【问题讨论】:

  • 如果有人决定使用更好(更有意义)的控件名称怎么办?那会默默地破坏你的代码。不要让你的逻辑依赖于控件名称。
  • @TimSchmelter 我使用了“有意义”的控件名称,但我只需要展示和重视其中的一些(我没有更好的想法)建议得到赞赏
  • 您可以将它们分组到容器控件中,例如 PanelGroupBox。然后很简单:Dim myTextboxes=textBoxPanel.Controls.OfType(Of TextBox).ToArray()
  • @TimSchmelter 他们已经进入了一个面板。我有类似 4 行的东西。每个都有一个组合框和五个文本框。我需要根据 Datatable.Rows.Count(1 到 4)从 DataTable 中插入值
  • 听起来如果数据在 DataTable 中,DataGridView 会更合适也更容易。

标签: vb.net loops controls


【解决方案1】:
Me.Controls.Find("TextBox" & n, True)

将是与您的 VBA 样式类似的方法。

【讨论】:

  • 当我尝试设置 Text 时出现错误。无法将Control() 转换为ComboBox(我使用了CType(.Find("CBox_Phase" & r, True), ComboBox)
  • 返回值是一个控件数组。您必须采用第一个并将其转换为文本框。我建议您考虑处理控件的方式。我认为一般来说这不是按名称迭代控件的好方法。正如我所看到的,你来自 VBA,我只能建议你从头开始重新学习 VB.NET,忘记 VBA 的东西。另一种方法是将所有要更改文本的控件存储在表单中的 List(of Textbox) 中,这样您就可以对每个控件和列表执行此操作。
【解决方案2】:

使用For Each,然后使用TypeOf 进行测试以在form 中找到所有TextBoxes,例如:

For Each myObject1 As [Object] In Me.Controls
     If TypeOf myObject1 Is TextBox Then
         TryCast(myObject1, TextBox).Text = "NeededValue"
     End If
Next

还有:

 Dim myText = {TextBox1, TextBox2, TextBox3, TextBox4, TextBox5}
        For Each btn In myText
            btn.Text = "NeededValue"
        Next

For i As Int32 = 1 To 5
    Dim Txt = Me.Controls.Find("TextBox" & i, True)
    If Txt.Length > 0 Then
        Txt(0).Text = "blah"
    End If
Next

或者:

  For i As Int32 = 1 To 5
       Dim Txt = Me.Controls.Find("TextBox" & i, True)
         If Txt.Length > 0 Then
            Txt(0).Text = "NeededValue"
         End If
   Next

【讨论】:

    猜你喜欢
    • 2012-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-16
    • 2016-01-06
    • 2021-12-14
    • 1970-01-01
    • 2015-08-23
    相关资源
    最近更新 更多