gpt4 book ai didi

VB.NET 迭代表单标签

转载 作者:行者123 更新时间:2023-12-02 09:41:31 24 4
gpt4 key购买 nike

我的设计表单上有几个标签框,它们都共享命名约定 lbl_#.text,其中 # 的范围为 1 到 60。我想创建一个循环遍历每个 lbl_#.text 添加一些增量值,假设是 2 的倍数,以达到该问题的理论目的。

最终结果如下:

lbl_1.text = "2"
lbl_2.text = "4"
lbl_3.text = "6"
...
lbl_60.text = "120"

我不确定如何通过编码端访问每个标签,我只知道如何明确提及每个标签并分配一个值:/

最佳答案

这里有几个选项。

  • 在这种情况下,标签通常有一个公共(public)容器,例如面板或组框控件。在这种情况下:

    Dim formLabels =  myContainerControl.Controls.OfType(Of Label)()
    For Each formLabel As Label In formLabels
    '...
    Next formLabel

    当然,这将逻辑组与视觉分组混合在一起。这两件事并不总是一致的,所以你也可以......

  • 将它们全部添加到 Label 数组(或 List(Of Label) 或任何其他可枚举的数组)中:

    Dim formLabels(60) As Label = {lbl_1, lbl_2, lbl_3 .... }

    For Each formLabel As Label in formLabels
    '...
    Next formLabel

    但有时这比它的值(value)更麻烦,即使您使用循环来创建集合,因此您也可以

  • 使用 .Name 属性(结合命名约定来标识所需的控件):

    Dim formLabels = Controls.Where(Function(c) c.Name.StartsWith("lbl_"))
    For Each formLabel As Label In formLabels
    '...
    Next formLabel
  • 上述内容的某种组合(例如,在表单加载事件中编写基于 name 属性创建列表的代码)。

请注意,所有这些选项中的实际 For Each 循环完全相同。无论您做什么,都可以编写一个表达式来标识标签控件,然后对表达式结果运行一个简单的循环。

这指向最终策略:从绑定(bind)到数据源的角度进行思考。使用数据源,您的标签将作为 DataGridViewFlowLayoutPanel 或类似控件的一部分创建。然后您可以迭代网格或面板中的行。

关于VB.NET 迭代表单标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9880003/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com