VB.NET 更改多个标签在运行时的可见性
VB.NET Change visibility of multiple labels on runtime
我试图在单击按钮后在运行时更改不同标签的可见性
Dim labelsEmpty As New ArrayList
Dim allTxt As New List(Of Control)
For Each txt As TextBox In FindControlRecursive(allTxt, Me, GetType(TextBox))
If txt.Text = "" Then
If txt.Name = "TextBox1" Then
Else
'Dim textBoxName = txt.Name.ToString.Remove("txt").ToLower
labelsEmpty.Add(txt.Name.ToString.Replace("txt", "lblMsg"))
End If
End If
Next
For Each label In labelsEmpty
Dim Label1 As New Label
Label1.Name = label
Label1.Text = "Insert a value"
Label1.Visible = True
Next
这就是我所拥有的,我表单中的每个文本框都有一个标签,用于告诉用户存在某种错误,在这种情况下,我需要获取哪个文本框留空并设置其可见性标签为真(从表单开始就隐藏了),所以我要做的是遍历表单中的每个文本框,看看用户将哪个文本框留空,然后取他们的名字(例如:txtAge)并将 txt 替换为“lblMsg”和然后将它们插入到数组中。
这样做我得到一个数组,其中包含所有应设置为 visible = true 的标签名称
现在我需要设置它们的可见性和文本值,所以我所做的是为每个循环创建一个并获取数组中的每个标签,但是我使用的代码不起作用,我已经检查过是否有数组中的项目,它们在那里,有什么帮助吗?谢谢
我的表格:https://i.stack.imgur.com/qrawz.png
在最后一个循环中,您正在创建 new 标签并且从不将它们添加到您的表单中。如果您的表单上已有标签,您希望引用这些标签:
For Each label In labelsEmpty
With Controls(label)
.Text = "Insert a value"
.Visible = True
End With
Next
如果您的标签已经包含必要的文本,则可能不需要设置文本 属性。
如果要创建新标签然后将它们添加到表单中,则需要在创建后将控件添加到表单中:
For Each label In labelsEmpty
Dim Label1 As New Label
With Label1
.Name = label
.Text = "Insert a value"
'.Top = 100
'.Left = 100
.Visible = True
End With
Controls.Add(Label1)
Next
如果您这样做,您将需要一些方法来设置 Top 和 Left 属性,以便标签与您现有的文本框正确对齐。有几种方法可以做到这一点,但我会把它留给你,因为我相当确定我的第一个解决方案可以回答你的问题。
我试图在单击按钮后在运行时更改不同标签的可见性
Dim labelsEmpty As New ArrayList
Dim allTxt As New List(Of Control)
For Each txt As TextBox In FindControlRecursive(allTxt, Me, GetType(TextBox))
If txt.Text = "" Then
If txt.Name = "TextBox1" Then
Else
'Dim textBoxName = txt.Name.ToString.Remove("txt").ToLower
labelsEmpty.Add(txt.Name.ToString.Replace("txt", "lblMsg"))
End If
End If
Next
For Each label In labelsEmpty
Dim Label1 As New Label
Label1.Name = label
Label1.Text = "Insert a value"
Label1.Visible = True
Next
这就是我所拥有的,我表单中的每个文本框都有一个标签,用于告诉用户存在某种错误,在这种情况下,我需要获取哪个文本框留空并设置其可见性标签为真(从表单开始就隐藏了),所以我要做的是遍历表单中的每个文本框,看看用户将哪个文本框留空,然后取他们的名字(例如:txtAge)并将 txt 替换为“lblMsg”和然后将它们插入到数组中。
这样做我得到一个数组,其中包含所有应设置为 visible = true 的标签名称
现在我需要设置它们的可见性和文本值,所以我所做的是为每个循环创建一个并获取数组中的每个标签,但是我使用的代码不起作用,我已经检查过是否有数组中的项目,它们在那里,有什么帮助吗?谢谢
我的表格:https://i.stack.imgur.com/qrawz.png
在最后一个循环中,您正在创建 new 标签并且从不将它们添加到您的表单中。如果您的表单上已有标签,您希望引用这些标签:
For Each label In labelsEmpty
With Controls(label)
.Text = "Insert a value"
.Visible = True
End With
Next
如果您的标签已经包含必要的文本,则可能不需要设置文本 属性。
如果要创建新标签然后将它们添加到表单中,则需要在创建后将控件添加到表单中:
For Each label In labelsEmpty
Dim Label1 As New Label
With Label1
.Name = label
.Text = "Insert a value"
'.Top = 100
'.Left = 100
.Visible = True
End With
Controls.Add(Label1)
Next
如果您这样做,您将需要一些方法来设置 Top 和 Left 属性,以便标签与您现有的文本框正确对齐。有几种方法可以做到这一点,但我会把它留给你,因为我相当确定我的第一个解决方案可以回答你的问题。