vb.net - 如何获取可以访问其属性的文本框列表

标签 vb.net

我需要获取文本框列表,然后找到具有匹配名称+前缀“lb_”的标签,然后调用其上的函数。我在这里还没有发现有人遇到这个问题。由于某种原因,它读取标签的名称,但文本框的名称显示为列表中出现的数字。

它也无法循环遍历文本框列表中的每个文本框,仅循环第一个项目,但它确实循环遍历每个标签。我已经确认语句“Controls.OfType(Of TextBox)”返回适当长度的列表。

For Each t In Controls.OfType(Of TextBox)
    Dim l = DirectCast(Controls("lb_" & t.Name), Label)
    If Not l Is Nothing Then
        SetControlProps_EnLo_KP(t, l)
    End If
Next

所有代码都位于表单的代码中。

编辑:所以我真正想知道的是 txtbox.Name 返回“1”而不是“txtbox”的可能解决方案/原因,即使放置在 foreach 循环之外。

解决方案:存在一个将所有文本框名称设置为 vbNull 的循环。我猜默认情况下,如果一个name设置为null,它就会变成“1”,无论引用哪个文本框,name属性都是“1”

最佳答案

For Each t In Controls.OfType(Of TextBox)
    Dim l = DirectCast(Controls("lb_" & t.Name), Label)

如果可能不匹配,请在使用前测试 l 是否为 Nothing

如果某些 TextBox 位于不同的父级上,您可以执行以下操作:

For Each t In Controls.OfType(Of TextBox)().Concat(otherParentControl.Controls.OfType(Of TextBox)())

关于vb.net - 如何获取可以访问其属性的文本框列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51100260/

相关文章:

vb.net - VB 传递参数值 ByRef 在方法退出之前不会改变值?

c# - 您是否必须为异步方法调用调用 EndInvoke (或定义回调),即使它返回时您无事可做

mysql - 将以下内容更改为带条件的参数化查询

vb.net - Visual basic 2012 如果 textbox.text = ""则忽略大小写

.net - 如何忽略在尝试重命名节点时创建无限循环的幻像 xml 属性?

c# - 在 C# 中的服务器上创建 COM 对象

MySQL 不显示新数据

vb.net - Sub提前结束了?

javascript - 在文件上传中获取真实路径而不是 'fakepath'

vb.net - 求和与分组 linq