VB.NET 从另一种形式调用以编程方式制作的标签

问题描述 投票:0回答:1

我以编程方式在 form1 上创建一个标签,并想在 form2 上调用它。

我尝试过的跟随。

表格1

将 lblAnimation 调暗为新标签

Me.Controls.Add(lblAnimation)

表格2

form1.lblAnimation.text =“测试”

但是form2上的部分不起作用。

我希望任何人都可以提供帮助。谢谢

我希望有人可以帮助我解决richt代码。

vb.net
1个回答
0
投票

您不能“调用”

Label
,或任何其他与此相关的对象。你调用一个方法。

理论上,您可以通过与添加它的表单相同的

Label
集合来访问该
Controls
。您可以通过
Name
访问它,但您尚未设置。如果您知道那是什么,您可以通过索引访问它,例如

Dim lbl = DirectCast(Form1.Controls(labelIndex), Label)

我猜你不知道索引是什么。另一种选择是循环访问该集合中的控件,并通过其他属性来识别您想要的控件,例如

For Each lbl In Fomr1.Controls.OfType(Of Label)()
    If lbl.SomeProperty = someValue Then
        'This is the Label you want.
    End If
Next

所有这些都是非常狡猾的,你不应该这样做。您实际上应该做的是在

Form1
中编写方法,执行您需要对
Label
执行的操作,然后从其他表单调用该方法。其他形式甚至不需要知道
Label
的存在。它应该简单地将适当的数据传递给方法并让
Form1
照顾自己,例如

Public Sub DisplayInLabel(text As String)
    Controls(labelIndex).Text = text
End Sub

另外,你到底为什么要在代码中创建这个

Label
?是否可以添加多个
Labels
而您事先不知道有多少个?如果是这样,您将必须弄清楚如何区分它们并找到您需要的那个。如果不是这种情况,为什么不直接将
Label
添加到设计器中的表单中,并将其
Visible
属性设置为
False
,然后调用其
Show
方法来让用户看到它呢?然后您就可以像访问任何其他
Label
一样访问它,例如

Public Sub DisplayInAnimationLabel(text As String)
    animationLabel.Text = text
End Sub
© www.soinside.com 2019 - 2024. All rights reserved.